Progress SQL92 Optimalizátor Jan Lánský

Slides:



Advertisements
Podobné prezentace
Aplikační a programové vybavení
Advertisements

KIV/ZIS Cvičení 6 SQL - SELECT.
SQL Další dotazy a pohledy
J. Pokorný Optimalizace dotazů slajdy k přednášce DBI006 Jaroslav Pokorný.
Základy jazyka SQL Jan Tichava
Zpracování SQL Lubomír Andrle 5. přednáška
Aplikační a programové vybavení
Jazyk SQL Ing. Zdena DOBEŠOVÁ. SQL Structured Query Language 1974 SEQUEL (Structured English Query Language) neprocedurální relační dotazovací jazyk norma.
Vyhodnocování dotazů slajdy k LS I155 Jaroslav Pokorný.
DB1 – 9. cvičení Optimalizace dotazu Konkurenční přístup a deadlock Indexace Transakce.
Databázové systémy SQL Výběr dat.
YDASYS1 Ing. Monika Šimková.
Fakulta elektrotechniky a informatiky
Informační systémy Nástroje pro sběr dat, návrh a realizace databáze.
AGREGACE Distinct, Group By, Having, SUM, …. DISTINCT  Slučování stejných řádků ve výsledku dotazu. AGREGACE 2 JménoPříjmeníID FrantišekVomáčka1 JosefPokorný2.
Další dotazy SQL Structured Query Language. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
SQL Structured Query Language
Informatika pro ekonomy II přednáška 11
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 1 Cvičení č. 2 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy I Přednáška č. 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 1 Cvičení č. 3 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Temporální databáze a TSQL
Dotazovací jazyk pro setříděná data Tereza Cihelková, Matěj Klonfar.
Medians and Order Statistics Nechť A je množina obsahující n různých prvků: Definice: Statistika i-tého řádu je i-tý nejmenší prvek, tj., minimum = statistika.
Databáze Jiří Kalousek.
MySQL - Vytvoření nové tabulky  create table jméno_tabulky (jméno_položky typ_položky,... ) Přehled nejběžnějších datových typů Přehled nejběžnějších.
Databázové systémy II Přednáška č. 8 – Pohledy (Views)
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Fakulta elektrotechniky a informatiky
Algoritmy a programovací techniky
Databázové systémy I Cvičení č. 9 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Optimalizace SQL dotazů
KIV/ZIS cvičení 6 Tomáš Potužák. Pokračování SQL Klauzule GROUP BY a dotazy nad více tabulkami Stáhnout soubor studenti_dotazy_sql.mdb.
Informatika pro ekonomy II přednáška 10
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy Přednáška č. 6.
SQL – základní pojmy Ing. Roman Danel, Ph.D.
Databázové systémy II Přednáška č. X Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Číslo šablony: III/2 VY_32_INOVACE_P4_3.8 Tematická oblast: Aplikační software pro práci s informacemi II. Databáze – základy SQL Typ: DUM - kombinovaný.
CW – 05 TEORIE ROZHODOVACÍCH PROCESŮ
Optimalizace SQL dotazů Michal Kopecký
RankSQL Query Algebra and Optimization for Relational Top-k Queries Václav Nádraský Jan Kašpar.
Fuzzy SQL Jaroslav Tykal, Jiří Dokulil. Proč Fuzzy Přesné vs. „nepřesné“ hodnoty Kdo má nejvyšší plat Kdo má vysoký plat Výhody přesnosti Jednoznačná.
Informatika II PAA DOTAZOVACÍ JAZYKY
Aplikační a programové vybavení
Rozpoznávání v řetězcích
Databáze velké množství dat pevně dané struktury
Obecná kvantifikace v relačních databázích Přehled typů dat a algoritmů Alan Eckhardt.
Databázové systémy SQL Výběr dat.
XML data na disku jako databáze Kamil Toman
DBXplorer Systém pro vyhledávání nad relačními databází podle klíčových slov. zpracovala Margarita Vishnyakova.
Databázové systémy 2 Zkouška – 8:00. Příklad I - Funkce Vytvořte funkci ZK_DIFF_MIN_MAX (P_ZAM_ID NUMBER) RETURN VARCHAR2. Funkce může vracet.
SQL Další dotazy a pohledy Databázové systémy. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
CUBE - Operátor relační agregace
Teorie zpracování dat RELAČNÍ DATOVÝ MODEL.
Lišta nástrojů Standard otevření, uložení a další manipulace se soubory (tj. projekty) načítání dat (mapových vrstev) „žluté plus“ změna měřítka odkaz.
Databázové systémy I Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2015.
Perzistence XML dat Kamil Toman
Databáze ● úložiště dat s definovaným přístupem ● typy struktury – strom, sekvence, tabulka ● sestává z uspořádaných záznamů ● databáze – struktura – záznam.
Úvod do databázových systémů
SQL – příkaz SELECT Ing. Roman Danel, Ph.D.
Databázové systémy I Přednáška 5 Databázové systémy 1 – KIT/IDAS1
Databázové systémy I Přednáška 8 Databázové systémy 1 – KIT/IDAS1
Databázové systémy a SQL
Informatika pro ekonomy přednáška 8
[ START WITH podmínka ] CONNECT BY podmínka
Optimalizace SQL dotazů
Přednáška 7 SQL – JOIN.
Transkript prezentace:

Progress SQL92 Optimalizátor Jan Lánský

Progress SQL92 Optimalizátor2 Obsah 1) Úvod a přehled 2) SQL92 server a optimalizátor 3) Stromová reprezentace dotazu 4) Transformace dotazu před optimalizací 5) Optimalizace 6) Prohlížení výsledku optimalizace 7) Ovlivnění optimalizace

Progress SQL92 Optimalizátor3 1. Úvod a přehled Progress SQL92 server Systém na vykonávání SQL příkazů z různých klientů (ODBC, JDBC, embedded SQL) Skládá se z mnoha komponent, např.: Komunikační manažer – komunikace s klienty Relační ukládací manažer – I/O operace Optimalizátor dotazů

Progress SQL92 Optimalizátor4 1. Úvod a přehled Optimalizátor dotazů Najít nejrychlejší cestu, jak vykonat dotaz a vrátit požadovaná data v co nejkratším čase. Vyrobí specifický plán vyhodnocení Vybere metody vyhodnocování a jejich pořadí

Progress SQL92 Optimalizátor5 1. Úvod a přehled Postupy optimalizátoru Dekompozice – rozklad dotazu na základní elementy (tabulky, sloupce, predikáty) Operace relační algebry (projekce, restrikce, spojení, třídění) Kompozice – spojovaní restrikcí nebo spojení do sekvencí navazujících kroků (pipeline) Cenová analýza – vybírá nejlevnější operace

Progress SQL92 Optimalizátor6 2. SQL92 server a optimalizátor Optimalizátor Cenový m. Statistický m. Prováděcí m.Autorizační m.ParserPohledový m. Manažer SQL dotazů Transakční relační ukládací manažer Komunikační m. M. Schémat

Progress SQL92 Optimalizátor7 3. Stromová reprezentace dotazu Dotaz se přetransformuje do relační algebry Operace jsou uzly stromu Restrikce (where a join klauzule) Projekce Třídění (order by kluazule) Tabulka (čtení dat z tabulky za pomoci defaultního indexu (prohlížení tabulky) nebo speciálního indexu (prohlížení indexu)

Progress SQL92 Optimalizátor8 3. Stromová reprezentace dotazu SELECT Jméno, DatumObjednávky FROM zákazníci, objednávky WHERE objednávky.DatumObjednávky = objednávky.DatumDodání Tabulka zákazníci projekce restrikce spojení Tabulka objednávky Jméno, DatumObjednávky objednávky.DatumObjednávky = objednávky.DatumDodání

Progress SQL92 Optimalizátor9 4.Transformace dotazu Počáteční strom dotazu vyrobí parser Poddotazy a predikáty ALL a ANY nahradí spojením Pohledy jsou nahrazeny svojí definicí

Progress SQL92 Optimalizátor10 5. Optimalizace Fáze optimalizačního procesu Restrikce co nejblíže listům Použití indexů pro restrikce Optimalizace spojení Optimalizace třídění Použití indexů pro MAX a MIN funkce Setřídění před prohledáváním

Progress SQL92 Optimalizátor11 5. Optimalizace Informace pro počítání ceny dotazu Cenové metriky pro různé typy operací Definice indexů Vlastnosti spojovacích algoritmů Selekce sloupců Filtrovací faktory Velikosti tabulek Je-li na výběr více variant, bere se ta nejlevnější

Progress SQL92 Optimalizátor Restrikce směrem k listům Posunutím restrikcí blíže listům se sníží množství zpracovávaných dat. Restrikce použité při spojení nelze posunout níže než je ono spojení. Je-li více restrikcí posunuto na stejnou pozici, lze je spojit do jedné.

Progress SQL92 Optimalizátor Restrikce směrem k listům SELECT zaměstnanci.Jméno FROM zaměstnanci, oddělení WHERE zaměstnanci.ČísloOddělení = oddělení.ČísloOddělění AND zaměstnanci.Plat>4000 AND zaměstnanci.Plat<=6000 spojení t. zaměstnanci projekce restrikce t. oddělení zaměstnanci.Jméno zaměstnanci.ČísloOddělení = oddělení.ČísloOddělění zaměstnanci.Plat>4000, zaměstnanci.Plat<=6000

Progress SQL92 Optimalizátor Použití indexů pro restrikce Máme-li index na atribut v restrikci nemusíme procházet tabulku sekvenčně Při rovnosti na několik hodnot provedeme několik vyhledání podle indexu V případě intervalu najdeme jeho jednu mez a sekvenčně procházíme do nelezení druhé meze.

Progress SQL92 Optimalizátor Použití indexů pro restrikce SELECT zaměstnanci.Jméno FROM zaměstnanci WHERE zaměstnanci.ČísloOddělení = 10 AND zaměstnanci.Plat>6000 t. zaměstnanci projekce restrikce zaměstnanci.Jméno Index ZaměstnanciInd ČísloOddělení = 10 zaměstnanci.Plat>6000

Progress SQL92 Optimalizátor Použití indexů pro restrikce Výběr nejlepšího indexu Předpříprava výrazů v predikátech Výběr indexů použitelných pro restrikce Výběr nejlepšího

Progress SQL92 Optimalizátor Transformace predikátů sloupec = konstanta1 OR sloupec = konstanta2  sloupec IN (konstanta1, konstanta2) sloupec = konstanta1 OR sloupec IN (konstanta2, konstanta3)  sloupec IN (konstanta1, konstanta2, konstanta3) sloupec LIKE “ABC%“  sloupec BETWEEN “ABC + %x0“ AND “ABC + %xff“

Progress SQL92 Optimalizátor Výběr indexů Pro každý predikát se najdou indexy které obsahují sloupce z predikátu. Pro takto najité indexy se zkontroluje zda se dá použít na operátor predikátu (=,<,, atd.) Pokud je index víceatributový, testuje se shoda klíče se sloupci predikátu

Progress SQL92 Optimalizátor Výběr nejlepšího index Pokud dala předchozí fáze alespoň jednoho kandidáty Výběr nejlepšího kandidáta je založen na nejnižší ceně. Cena vítěze se porovná se sekvenčním procházením a lepší z variant se použije.

Progress SQL92 Optimalizátor Optimalizace spojení Řešíme dva odlišné problémy Pořadí spojení Algoritmus pro spojení

Progress SQL92 Optimalizátor Pořadí spojení Zjištění velikostí sekektivit tabulek, které se budou spojovat. Join kardinalita = velikost * selektivita Jako první se bude provádět spojení, které bude mít nejmenší join kardinalitu výsledku. Join kardinalita (A join B on podm)= join kardinalita A * join kardinalita (B) * selektivita (podm)

Progress SQL92 Optimalizátor Pořadí spojení - příklad Jsou spojovací podmínky mezi: T2 a T1 a T3, mezi T1 a T3 a T4, mezi T3 a T4 Řešení: 1. T2 a T1 2. Výsledek1 s T3 3. Výsledek2 s T4 tabulkaT1T2T3T4 kardinalita

Progress SQL92 Optimalizátor Výběr algoritmu spojení Typy algoritmů Rozšířený algoritmus hnízděných cyklů (ANL) Spojení sléváním Algoritmus hnízděných cyklů Optimalizátor vybere algoritmus, jehož předpoklady jsou splněny a má nejmenší cenu.

Progress SQL92 Optimalizátor Algoritmus ANL Rozšířený algoritmus hnízděných cyklů Prochází levý podstrom a pro každý jeho řádek provede vyhledání podle indexu v pravém podstromu a v něm pak sekvenčně dohledává stejné hodnoty. Nutné podmínky Pravý podstrom má index na atribut podle kterého se provádí spojení Tento index nebyl použit pro žádné jiná hledání

Progress SQL92 Optimalizátor Spojení sléváním Dvoufázový algoritmus 1. fáze sort 2. Fáze slévání Většinou nebývá použit, ANL mívá nižší cenu.

Progress SQL92 Optimalizátor Vnořené cykly Ve vnějším cyklu procházíme výsledek levého podstromu a pro každý jeho řádek projdeme celý výsledek pravého podstromu. Může být použit kdykoliv, ale má vysokou cenu. Pro malé velikosti podstromu nicméně může být nejvýhodnější.

Progress SQL92 Optimalizátor Optimalizace třídění Optimalizují se dva typy situací Zabránění redundantnímu třídění Náhrada sekvenčního prohledávání a následného třídění za třídění a vyhledávání podle setříděného indexu.

Progress SQL92 Optimalizátor Redundantní třídění Netřídíme, pokud ke třídění dostaneme setříděný vstup. Například máme-li na dotaz, ve kterém se na jeden atribut používá GROUP BY a ORDER BY, stačí třídit jednou.

Progress SQL92 Optimalizátor Předsunutí třídění Náhrada sekvenčního prohledávání a následného třídění za třídění a vyhledávání podle setříděného indexu.

Progress SQL92 Optimalizátor Užití indexů pro MAX, MIN Existuje-li index na atribut, který je argumentem funkce, použijeme ho, místo sekvenčního procházení tabulky. Podíváme se na první (nebo poslední) indexovanou hodnotu.

Progress SQL92 Optimalizátor Setřídění před prohledáváním Někdy se může vyplatit místo sekvenčního vyhledávání atribut setřídit a vytvořit index. Výhodné pro tabulky v listech. Nebo, hledáme-li v tabulce postupně téměř všechny hodnoty.

Progress SQL92 Optimalizátor32 6. Prohlížení optimalizace Progress SQL92 Server má virtuální systémovou tabulku _Sql_Qplan create table “Sql_Qplan“ ( “_Pnumber“ integer not null, “_Ptype“ integer not null, “_Dtype“ integer not null, “_Description“ varchar(255) not null, “_Dseq“ integer not null );

Progress SQL92 Optimalizátor33 6. Prohlížení optimalizace _Pnumber – číslo plánu, řazeno sestupně _Ptype – číslo typu plánu _Dtype - nepoužito _Description – slovní popis plánu _Dseq – číslo řádku plánu

Progress SQL92 Optimalizátor34 7. Ovlivnění optimalizace Plán vyhodnocení je závislý na optimalizačním algoritmu a na vstupech používaných optimalizátorem Samotný SQL dotaz Informace ze schémat tabulek, indexy Statistické informace o frekvenci dat bez indexů, statistickém rozložení dat, velikost tabulek.

Progress SQL92 Optimalizátor35 7. Ovlivnění optimalizace WHERE predikáty ovlivňují počty zpracovávaných řádků, čím více selektivní, tím lépe. Používané sloupce by měli mít index. Pravidelně volat UPDATE STATISTICS

Progress SQL92 Optimalizátor36 Literatura The Progress RDBMS SQL92 Optimizer Progress Version 9.1D Author: SQL Engineering Group Edition 1, September 2002