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

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

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

Roman Dušek

5. Formalizace návrhu databáze

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

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

5. Formalizace návrhu databáze

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

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

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

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ř.

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

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ů

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

Optimalizace SQL dotazů

9. Transakční zpracování

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í

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

Operátory ROLLUP a CUBE

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ů

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

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

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

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

04 - Databázové systémy

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

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

Ú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

Tabulka fotbalové ligy

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):

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

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

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

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

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

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

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

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

TimescaleDB. Pavel Stěhule 2018

Oracle XML DB. Tomáš Nykodým

1 Webový server, instalace PHP a MySQL 13

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

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

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

Databázové systémy I

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

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

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

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

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í

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

Databázové a informační systémy

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

4IT218 Databáze. 4IT218 Databáze

Architektury a techniky DS. Efektivní navrhování schémat

INDEXY JSOU GRUNT. Pavel Stěhule

Úvod do databázových systémů

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 IF K.r_cislo = U.r_cislo THEN Zařaď spojené n-tice K a U do výsledku - výpočetní složitost: b Klient * b Ucet +b Klient bloků - 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 (U.r_cislo = U.r_cislo) DO BEGIN 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 */ 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 (K.r_cislo = U.r_cislo) DO BEGIN 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 Ucet S c_uctu r_cislo 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á 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 Vytvoř hašovaný index nad H Ui pro r_cislo; FOR EACH n-tici K IN H Ki DO BEGIN 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