8. Zpracování dotazu. J. Zendulka: Databázové systémy 8 Zpracování dotazu 1

Podobné dokumenty
J. Zendulka: Databázové systémy 8 Zpracování dotazu Podstata optimalizace zpracování dotazu

6. Fyzická (interní) úroveň databázového systému

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

6. Fyzická (interní) úroveň databázového systému

4. Relační model dat. J. Zendulka: Databázové systémy 4 Relační model dat 1

J. Zendulka: Databázové systémy 4 Relační model dat 1

Optimalizace dotazů a databázové transakce v Oracle

10. Architektura klient/server a třívrstvá architektura

10. Architektura klient/server a třívrstvá architektura

Vyhodnocování dotazů slajdy k přednášce NDBI001. Jaroslav Pokorný MFF UK, Praha

Roman Dušek

5. Formalizace návrhu databáze

IDS optimalizátor. Ing. Jan Musil, IBM ČR Community of Practice for

12. Postrelační databázové systémy

12. Postrelační databázové systémy

5. Formalizace návrhu databáze

B Organizace databáze na fyzické úrovni u serveru Oracle

Optimalizace. Ing. Marek Sušický, RNDr. Ondřej Zýka

Univerzita Pardubice Fakulta ekonomicko-správní. Hinty Oracle a jejich vliv na výkon dotazu. Bc. Josef Pirkl

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např.

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

9. Transakční zpracování

2. Konceptuální model dat, E-R konceptuální model

Operátory ROLLUP a CUBE

Databáze I. Přednáška 7

Optimalizace SQL dotazů

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.

O Apache Derby detailněji. Hynek Mlnařík

8.2 Používání a tvorba databází

6. SQL složitější dotazy, QBE

Použití databází na Webu

Maturitní témata z předmětu PROGRAMOVÉ VYBAVENÍ pro šk. rok 2012/2013

Tvorba informačních systémů

Databázové systémy trocha teorie

A5M33IZS Informační a znalostní systémy. O čem předmět bude? Úvod do problematiky databázových systémů

RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague

1. Databázové systémy (MP leden 2010)

Databázové systémy Cvičení 5.2

Informační systémy ve zdravotnictví. 6. cvičení

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

2 Konceptuální modelování a návrh databáze

2 Konceptuální modelování a návrh databáze

Vkládání, aktualizace, mazání

1 Úvod. J. Zendulka: Databázové systémy - 1 Úvod 1

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

Relace x vztah (relationship)

Databázové systémy Cvičení 5

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

Analýza dat a modelování. Přednáška 3

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

Databázové systémy. Cvičení 6: SQL

Tabulka fotbalové ligy

Databázové systémy Cvičení 5.3

SQL - trigger, Databázové modelování

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

04 - Databázové systémy

J. Zendulka: Databázové systémy - 1 Úvod Intuitivní vymezení pojmu databáze

Kapitola 6: Omezení integrity. Omezení domény

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Datové modelování II

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

Databázové systémy I

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

ÚVOD DO DATABÁZÍ. Metodické listy pro předmět

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Databáze II. 1. přednáška. Helena Palovská

OPTIMALIZÁTOR SQL DOTAZŮ - ÚVOD DO PROBLEMATIKY

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

XML databáze. Přednáška pro kurz PB138 Moderní značkovací jazyky Ing. Petr Adámek

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

4. lekce Přístup k databázi z vyššího programovacího jazyka

Čteme EXPLAIN. CSPUG, Praha. Tomáš Vondra Czech and Slovak PostgreSQL Users Group

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

TimescaleDB. Pavel Stěhule 2018

Oracle XML DB. Tomáš Nykodým

1 Webový server, instalace PHP a MySQL 13

Databáze I. 1. přednáška. Helena Palovská

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Optimalizace. Ing. Marek Sušický, RNDr. Ondřej Zýka

Uložené procedury Úvod ulehčit správu zabezpečení rychleji

Fakulta elektrotechniky a informatiky Databázové systémy 2. Leden 2010 souhrn. Červené dobře (nejspíš), modré možná

Jazyk S Q L základy, příkazy pro práci s daty

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

PG 9.5 novinky ve vývoji aplikací

Dotazovací jazyky I. Datová krychle. Soběslav Benda

3. Jazyky relačních databázových systémů

Semestrální práce z DAS2 a WWW

Audit DB. Referát. Vypracoval: Zdeněk Doležal MFF UK Praha 11/5/06

1. Webový server, instalace PHP a MySQL 13

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Přehled systému Microsoft SQL Server. Komu je kniha určena Struktura knihy Nejvhodnější výchozí bod pro čtení knihy Konvence a struktura knihy

Kapitola 4: SQL. Základní struktura

Transkript:

8. Zpracování dotazu 8.1. Podstata optimalizace zpracování dotazu... 2 8.2. Postup optimalizace zpracování dotazu... 3 8.2.1. Implementace spojení... 5 8.2.2. Využití statistik databáze k odhadu ceny dotazu...11 8.3. Optimalizace zpracování dotazu u serveru Oracle... 13 Literatura... 16 J. Zendulka: Databázové systémy 8 Zpracování dotazu 1

8.1. Podstata optimalizace zpracování dotazu Optimalizace zpracování dotazu znamená nalezení (sub)optimální strategie zpracování dotazu. - nutnost u relačních systémů - propracované metody optimalizace - optimalizaci provádí SŘBD (komponenta zvaná optimalizátor zpracování dotazu). Má dostatek informací (více než programátor), Při změně parametrů databáze stačí zkompilovat znovu dotaz, lze prověřit řadu strategií, Př) Které pobočky mají nějakého klienta z Ivančic? SELECT U.pobocka FROM Klient K, Ucet U WHERE K.r_cislo = U.r_cislo and K.mesto = Ivančice Procedurální vyjádření jako výraz relační algebry - varianty: ((Klient JOIN Ucet) WHERE mesto = 'Ivančice')[pobocka] ((Klient WHERE mesto = 'Ivančice') JOIN Ucet)[pobocka] ((Klient JOIN Ucet[r_cislo, pobocka]) WHERE mesto = 'Ivančice')? J. Zendulka: Databázové systémy 8 Zpracování dotazu 2

8.2. Postup optimalizace zpracování dotazu 1.) převod do vnitřní reprezentace ((Klient JOIN Ucet) WHERE mesto = 'Ivančice')[pobocka] 2.) nalezení ekvivalentního, ale efektivnějšího výrazu (((Klient WHERE mesto='ivančice')[r_cislo]) JOIN Ucet)[pobocka] - některá pravidla (heuristiky): ( A JOIN B ) WHERE podm_pro_a AND podm_pro_b = ( A WHERE podm_pro_a ) JOIN ( B WHERE podm_pro_b) ( A WHERE podm1_pro_a ) WHERE podm2_pro_a = A WHERE podm1_pro_a AND podm2_pro_a ( A [atributy1] ) [atributy2] = A [atributy2] ( A [atributy1] ) WHERE podm1 = ( A WHERE podm1 ) [atributy1] - sémantická optimalizace - využití sémantické informace, např. cizí klíče Př) ( Ucet JOIN Klient ) [r_cislo] = Ucet [r_cislo] J. Zendulka: Databázové systémy 8 Zpracování dotazu 3

3. výběr kandidátů procedur pro implementaci operací - statistiky databáze, existence indexů, shlukování,... optimalizovaný výraz optimalizátor informace o DB implementační procedury operací 4. generování plánu vyhodnocení (access/evaluation/execution plan) a výběr nejlepšího - cenová funkce: počet diskových operací, případně také čas CPU J. Zendulka: Databázové systémy 8 Zpracování dotazu 4

8.2.1. Implementace spojení Př) (Klient JOIN Ucet) Počet záznamů relace Klient: n Klient Počet bloků relace Klient: b Klient Počet záznamů relace Ucet: n Ucet Počet bloků relace Ucet: b Ucet Jednoduchá iterace (zanořené cykly (nested-loops)) FOR EACH n-tici K IN Klient DO FOR EACH n-tici U IN Ucet DO IF K.r_cislo = U.r_cislo THEN Zařaď spojené n-tice K a U do výsledku - výpočetní složitost (nejhorší případ): n Klient * b Ucet + b Klient bloků (za předpokladu pouze jednoho bloku každé relace ve vyrovnávací paměti) vhodné pro obecné spojení malých relací, resp. když nelze použít efektivnější způsob J. Zendulka: Databázové systémy 8 Zpracování dotazu 5

Iterace orientovaná na bloky (block-nested loops) FOR EACH blok dat B Klient OF Klient DO FOR EACH blok dat B Ucet OF Ucet DO FOR EACH n-tici K IN B Klient DO FOR EACH n-tici U IN B Ucet DO - výpočetní složitost: IF K.r_cislo = U.r_cislo THEN b Klient * b Ucet +b Klient bloků Zařaď spojené n-tice K a U do výsledku - další možné optimalizace (ukončení vnitřního cyklu při rovnosti hodnot a klíči, použití většího prostoru pro bloky vnější relace, využití indexu ve vnitřním cyklu,...) Indexovaná iterace (indexed nested-loops) - n-tice vnitřní relace se zpřístupňuje využitím indexu - výpočetní složitost (nejhorší případ): b Klient +n Klient * c IndexUcet bloků, kde je cena přístupu c IndexUcet využitím indexu J. Zendulka: Databázové systémy 8 Zpracování dotazu 6

Algoritmus sort/merge Setřiď soubory záznamů relací Klient a Ucet vzestupně podle hodnot ve sloupci r_cislo. Výsledkem budou setříděné relace Klient S a Ucet S ; K := první n-tice relace Klient S ; U := první n-tice relace Ucet S ; WHILE není konec relace Klient S nebo relace Ucet S DO /* posbírání n-tic relace Ucet S se stejnou hodnotou */ Vyprazdni pomocnou relaci Stejne; U := U ; Vlož do Stejne n-tici U; U := další n-tice relace Ucet S ; WHILE (není konec relace Ucet S ) AND BEGIN END (U.r_cislo = U.r_cislo) DO Vlož do Stejne n-tici U ; U := další n-tice relace Ucet S ; J. Zendulka: Databázové systémy 8 Zpracování dotazu 7

/* nalezení prvního kandidáta na spojení v Klient S */ END WHILE (není konec relace Klient S ) AND (K.r_cislo < U.r_cislo) DO K := další n-tice relace Klient S ; /* zpracování kandidátů v relaci Klient S */ WHILE (není konec relace Klient S ) AND BEGIN END (K.r_cislo = U.r_cislo) DO FOR EACH n-tici S IN Stejne DO Zařaď spojené n-tice K a U do výsledku; K := další n-tice relace Klient S ; - výpočetní složitost: b KlientS +b UcetS bloků setříděných souborů (vejde-li pomocná relace Stejné do paměti) + doba setřídění J. Zendulka: Databázové systémy 8 Zpracování dotazu 8

Klient S r_cislo jmeno 440726/0672 Jan Novák 510230/048 Pavel Tomek 530610/4532 Petr Veselý 580807/9638 Josef Mádr 601001/2218 Ivan Zeman 625622/6249 Jana Malá Ucet S c_uctu r_cislo 4320286 440726/0672 2075752 440726/0672 1182648 530610/4532 3564852 580807/9638 2001793 580807/9638 5853961 601001/2218 1582549 625622/6249 Hašované spojení /* Rozčlenění */ FOR EACH n-tici K IN Klient DO Zařaď n-tici do sekce H Ki, kde i = h(k.r_cislo) FOR EACH n-tici U IN Ucet DO Zařaď n-tici do sekce H Ui, kde i = h(u.r_cislo) J. Zendulka: Databázové systémy 8 Zpracování dotazu 9

/* Spojování po sekcích metodou indexované iterace*/ FOR i = 0 TO n i DO BEGIN END Vytvoř hašovaný index nad H Ui pro r_cislo; FOR EACH n-tici K IN H Ki DO BEGIN END Použitím hašovaného indexu nad H Ui najdi všechny n-tice U j relace Ucet se stejnou hodnotou atributu r_cislo; FOR EACH souhlasnou n-tici U IN H Ui DO Zařaď spojené n-tice K a U do výsledku; J. Zendulka: Databázové systémy 8 Zpracování dotazu 10

8.2.2. Využití statistik databáze k odhadu ceny dotazu Základní používané statistiky n R... počet n-tic v relaci R, s R... velikost n-tice relace R V(X, R)... počet různých hodnot atributu X v relaci R Př) R(A), X A n R /V(X, R) R WHERE X = c... odhad velikosti - selektivita n R /V(X, R)*s R - odhad velikosti výsledné relace Selektivita atributu X relace R je průměrný počet n-tic připadajících na jednu hodnotu atributu X v relaci R. Př) R(A), S(B) RS = R JOIN S Kolik n-tic bude mít relace RS? Varianty: A B = {} n RS = n R *n S X = A B je PK relace R n RS = n S J. Zendulka: Databázové systémy 8 Zpracování dotazu 11

X = A B {} a není PK n RS = min{ n R * n S /V(X, S), n S * n R /V(X, R) } Aktualizace statistik - provádí administrátor po výraznějších změnách v databázi, při poklesu výkonnosti apod. J. Zendulka: Databázové systémy 8 Zpracování dotazu 12

8.3. Optimalizace zpracování dotazu u serveru Oracle Nastavení režimu optimalizace ALTER SESSION SET OPTIMIZER_MODE = {FIRST_ROWS FIRST_ROWS_ n ALL_ROWS RULE CHOOSE } Lze zvolit: cíl optimalizace minimální doba odezvy, maximální propustnost přístup k optimalizaci založený na statistikách - doporučený založený pouze na pravidlech J. Zendulka: Databázové systémy 8 Zpracování dotazu 13

Zjištění výsledného plánu vyhodnocení - lze zjistit příkazem EXPLAIN PLAN Aktualizace statistik - použitím balíku DBMS_STATS nebo příkazem ANALYZE Př) Najdi zaměstnance, jejichž plat nespadá do žádného platového pásma (v tabulce SALGRADE)? SELECT ename, job, sal, dname FROM EMP, DEPT WHERE EMP.deptno = DEPT.deptno AND NOT EXISTS (SELECT * FROM SALGRADE WHERE EMP.sal BETWEEN losal AND hisal); J. Zendulka: Databázové systémy 8 Zpracování dotazu 14

ID OPERATION OPTIONS OBJECT_NAME 0 SELECT STATEMENT 1 FILTER 2 NESTED LOOPS 3 TABLE ACCESS FULL EMP 4 TABLE ACCESS BY ROWID DEPT 5 INDEX UNIQUE SCAN PK_DEPTNO 6 TABLE ACCESS FULL SALGRADE J. Zendulka: Databázové systémy 8 Zpracování dotazu 15

Literatura 1. Silberschatz, A., Korth H.F, Sudarshan, S.:Database System Concepts. Fourth Edition. McGRAW-HILL. 2001, str. 493 564. 2. Date C.J.: An Introduction to Database Systems. Sixth edition. Addison-Wesley, 1995, str. 501 542. 3. Pokorný, J.: Databazová abeceda. Science, Veletiny, 1998, str., 23 26, 77 80, 119 124. 4. Oracle9i Database Performance Tuning Guide and Reference. Oracle Corp. March 2002, str. 1-1 9-22. J. Zendulka: Databázové systémy 8 Zpracování dotazu 16