Frågeoptimering. Frågeoptimering kapitel 14



Relevanta dokument
Andra relationella språk

Relationell databasdesign

Relationsmodellen. Relations modellen är idag den mest änvända datamodellen för kommersiella

Uppdelning. Relationell databasdesign, FB Teori Låt R vara ett relationsschema. R 1, R 2,..., R n är en uppdelning av

Dagens föreläsning. KTH & SU, CSC Databasteknik Föreläsning 10 sid 1

Vad du skall komma ihåg från tidigare föreläsningar. Dagens föreläsning. Evaluering av frågor. Data dictionary

SQL, nästlade delfrågor Nästlade delfrågor. En nästlda delfråga är ett select-from-where uttryck inom where-klausulen i en annan fråga.

Reducering till relationsscheman

E-R-modellen, E-R-diagram E-R-diagram. representerar entitetsmängder

Databaser - Design och programmering. Operationer i relationsalgebra. Att söka ut data. Exempel DBschema. Att plocka ut data, forts

EMPS(NAME, SALARY, DEPT)

Funktionella beroenden - teori

Tentamen i Databasteknik

Databasdesign. E-R-modellen

Tentamen i Databasteknik

n Detta för att kunna koncentrera oss på n Tal: number? n Symboler: symbol? n Strängar: string? n Tecken: char? n Boolskt: boolean?

Informationssystem och Databasteknik, 2I-1100 HT2001. Relationsalgebra. Relationsalgebran är sluten: R 1 op R 2 R 3.

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

Typsystem. Typsystem... Typsystem... Typsystem... 2 *

Typsystem. DA2001 (Föreläsning 23) Datalogi 1 Hösten / 19

Tillämpad Programmering (ID1218) :00-13:00

Speciell användning av heltalsvariabler. Heltalsprogrammering. Antingen-eller-villkor: Exempel. Speciell användning av heltalsvariabler

Frågespråk mot relationsmodellen

Relationsalgebra. Varför behöver jag lära mig relationsalgebra?!

Frågebearbetning. Thomas Padron-Mc Carthy

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2

Dagens föreläsning Programmering i Lisp Fö 5

Quine McCluskys algoritm

Språket Python - Del 1 Grundkurs i programmering med Python

Tentamen i. TDDC67 Funktionell programmering och Lisp

Programmering II (ID1019) :00-11:00

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Tentamen DATABASTEKNIK - 1DL116

Lära dig analysera större och mer komplicerade problem och formulera lösningar innan du implementerar.

Datastrukturer och algoritmer. Innehåll. Tabell. Tabell - exempel. Gränsyta till Tabell. Tabell. Modell. Hashtabell Relation, lexikon.

Lösningsförslag till övningsuppgifter, del II

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Avancerad SQL Kapitel 4. Databaser: Avancerad SQL. sid SQL datatyper 1 Integritetsbegränsningar 3 Auktorisering 7 Inbäddad SQL 10 Dynamisk SQL 10

729G74 IT och programmering, grundkurs. Tema 2. Föreläsning 3 Jody Foo,

Grunderna för relationsmodellen!

729G74 IT och programmering, grundkurs. Tema 2. Föreläsning 3 Jody Foo,

Ett databashanteringssystem (DBHS) skiljer sig från andra programmeringssystem bl.a.

Föreläsning 2 Datastrukturer (DAT037)

Lösning till tentamensskrivning på kursen Diskret Matematik, moment B, för D2 och F, SF1631 och SF1630, den 1 juni 2011 kl

Magnus Nielsen, IDA, Linköpings universitet

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Filosofisk logik Kapitel 15. Robin Stenwall Lunds universitet

1 Duala problem vid linjär optimering

Tentamen EIT:DB Databastmetodik 11/ kl Lösningsförslag

Tjänsteprototypning. och tjänsterepresentationer. Johan Blomkvist IDA-HCS-IxS

Omtentamen: Tillämpad Programmering (ID1218) :00-13:00

Innehåll. F7: Tabell, hashtabell, relation & lexikon. Gränsyta till Tabell. Tabell. Tabell Hashtabell Relation Lexikon.

Objektorienterad programmering Föreläsning 10. Copyright Mahmud Al Hakim Sorteringsalgoritmer

Explorativ övning 9 RELATIONER OCH FUNKTIONER

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Problemlösning. Planering av program. Konstruktion. Programmeringsmetaforer. Problemlösning. Programmering = Problemlösning

Hur implementera algoritmerna på maskinnivå - datorns byggstenar

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Induktionsprincipen Starka induktionsprincipen Välordningsprincipen Divisionsalgoritmen

Föreläsning 5: Relationsmodellen

Synkronisering. Föreläsning 8

MODELLER OCH SPRÅK FÖR RELATIONSDATABASER: Relationsalgebra, Relationskalkyl (Tuple calculus) & SQL

Programmering II (ID1019) :00-11:00

Karlstads Universitet, Datavetenskap 1

Dynamisk programmering. Dynamisk programmering. Dynamisk programmering. Dynamisk programmering

Datastrukturer och algoritmer

Programmering II (ID1019)

de var svåra att implementera och var väldigt ineffektiva.

min c 1 x 1 + c 2 x 2 då x 1 + x 2 = 1, x 1 {0, 1}, x 2 {0, 1} plus andra bivillkor. Vi måste göra k st av n alternativ:

Relationsalgebra. Relationsalgebra består av en mängd operatorer som tar en eller två relationer som input och producerar en ny relation som resultat.

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen DATABASTEKNIK - 1DL116, 1MB025

Karlstads Universitet, Datavetenskap 1

18 juni 2007, 240 minuter Inga hjälpmedel, förutom skrivmateriel. Betygsgränser: 15p. för Godkänd, 24p. för Väl Godkänd (av maximalt 36p.

Begreppen "mängd" och "element" är grundläggande begrepp i matematiken.

Linjärt minne. Sammanhängande minne är ej flexibelt. Effektivt

IT för personligt arbete F5

Tentamen DATABASTEKNIK - 1DL116, 1MB025, 1DL124

Optimering. Optimering

Optimering och simulering: Hur fungerar det och vad är skillnaden?

Problemlösning och funktioner Grundkurs i programmering med Python

I kursen i endimensionell analys är mängden av reella tal (eng. real number), R, fundamental.

DIVISIONSEXEMPEL RELATIONSALGEBRA OCH SQL. r s använder vi för att uttrycka frågor där ordet alla figurerar:

Kombinatorik. Kapitel 2. Allmänt kan sägas att inom kombinatoriken sysslar man huvudsakligen med beräkningar av

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Dagens föreläsning Programmering i Lisp Fö 7. Sammanfattning funktionell programmering Exempel på funktionella programspråk

1 LP-problem på standardform och Simplexmetoden

TNK049 Optimeringslära

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary Definitioner Implementation... 2

Begreppen "mängd" och "element" är grundläggande begrepp i matematiken.

6. Ge korta beskrivningar av följande begrepp a) texteditor b) kompilator c) länkare d) interpretator e) korskompilator f) formatterare ( pretty-print

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

Grundläggande logik och modellteori

Grundläggande logik och modellteori

Introduktion till programmering SMD180. Föreläsning 9: Tupler

Tommy Färnqvist, IDA, Linköpings universitet

min c 1 x 1 + c 2 x 2 då x 1 + x 2 = 1, x 1 {0, 1}, x 2 {0, 1} plus andra bivillkor. Vi måste göra k st av n alternativ:

TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS

BEGREPP HITTILLS FÖRELÄSNING 2 SAMMANSATTA UTTRYCK - SCHEME DATORSPRÅK

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:15 19:15

Transkript:

Frågeoptimering kapitel 14 Frågeoptimering sid Introduktion 1 Transformering av relationsuttyck 4 Kataloginformation för kostnadsestimering Statisk information för kostnadsestimering Kostnadsbaserad optimering

Frågeoptimering, Introduktion 14-1 Introduktion "Systemet" (ej användaren) ansvarar för att transformera en fråga till en ekvavalent fråga som kan evalueras effektift. Intern representeras en fråga som ett annoterat relationsalgebraiskt-uttrycksträd. Ex.: Π customer_name (sort to remove duplicates) (hash join) (merge join) depositor σ branch_city = Brooklyn (use index 1) σ balance < 1000 (use linear scan) branch account En given fråga kan evalueras på många olika sätt, ty ett fråga motsvaras av mågna ekvivalenta uttryck många olika algoritmer kan användas för att utföra en given operation (kap 13). Dvs. För en given fråga kan många annoterade uttrycksträd (exekveringsplaner) konstrueras och systemet bör välja den mest effektiva. Obs! Kostnadsskilnaden mellan ett bra och ett dåligt sätt att evaluera en fråga kan vara enorm. Idealiskt: Hitta bästa planen Verkligheten: Undvik sämsta planen Π customer_name (σ branch_city = Brooklyn balance < 1000 (branch account depositor))

Frågeoptimering, Introduktion 14-2 Kostnadsbaserad optimering Generering av evalueringsplaner för ett uttryck involverar fler steg: Generera logiskt ekvivalenta uttryck m.h.a. ekvivalensregler Annotera resulterande uttryck för att få allternativa exekveringsplaner Uppskatta planernas kostnader (estimerad kostnad) och välj den billigaste planer.

Frågeoptimering, Transformering av relationsuttryck 14-3 Transformering av relationsuttryck Två relationsalgebra uttryck säges vara ekvivalenta om de två uttrycken genererar samma mängd av tupler på varje legal databasinstans (tuplernas ordningsföljd är irrelevant). Två uttryck i multimängd versionen av relationsalgebra säges vara ekvivalenta om de genererar samma multimängd av tupler på varje legal databasinstans. En ekvivalensregel anger att två uttryck är ekvivalent, dvs. att uttrycken kan ersätta varandra. Ekvivalensregeler 1. Konjunktiva selektions-operationer kan brytas ned till en följd av individuella selektioner σ (E ) = σ (σ (E )) θ 1 θ 2 θ 1 θ 2 2. Selektions operationen är kommutativ σ (σ (E )) = σ (σ (E )) θ 1 θ 2 θ 2 θ 1 3. Bara den sista i en följd av projektions operationer behövs, de andra kan utelämnas Π (Π (... (Π (E ))...) = Π (E )) L 1 L 2 L ν L 1 4. Selektioner kan kombineras med kartesiska produkter och theta- joins a. σ θ (E 1 E 2 ) = E 1 1θE 2 b. σ θ1 (E 1 1θ2 E 2 ) = E 1 1θ1 θ2 E 2 5. Theta-join operationen (och naturliga join operationer) är kommutativ E 1 E 2 = E 2 E 1 1θ 1θ

Frågeoptimering, Transformering av relationsuttryck 14-4 6a. Naturliga join operationen är assossiativ (E 1 E 2 ) E 3 = E 1 (E 2 E 3 ) 6b. Theta-join operationen är assossiativ på följande sätt (E 1 1θ E 2 ) E 3 = E 1 (E 2 E 3 ) 1 1θ 2 θ 3 1θ 1 θ 3 1θ 2 där θ 2 bara involverar attribut från E 2 och E 3 7. Selektion operationen distribuerar över theta-join operationen under följande två villkor: (a) När alla attribut i θ 0 bara involverar attribut ur ett av uttrycken som joinas σ (E 1 E 2 ) = (σ (E 1 )) E 2 θ 0 1θ θ 0 1θ (b) När θ 1 bara involverar attribut ur E 1 och θ 2 bara involverar attribut ur E 2 σ (E 1 E 2 ) = (σ (E 1 )) (σ (E 2 )) θ 1 θ 2 1θ θ 1 1θ θ 2 8. Projektions operationen distribuerar över theta-join operationen på följande sätt: (a) om Θ bara involverar attribut från L 1 L 2 Π (E 1 E 2 ) = (Π (E 1 )) (Π (E 2 )) L 1 L 2 1θ L 1 1θ L 2 (b) Betrakta ej join E 1 E 2 1θ Låt L 1 och L 2 vara mängder av attribut i E 1 resp. E 2. Låt L 3 vara attribut i E 1 som är involverade i join-vilkor θ, men ej är i L 1 L 2 Låt L 4 vara attribut i E 2 som är involverade i join-vilkor θ, men ej är i L 1 L 2 Π (E 1 E 2 ) =Π ((Π (E 1 )) ((Π (E 2 ))) L 1 L 2 1θ L 1 L 2 L 1 L 3 1θ L 2 L 4

Frågeoptimering, Transformering av relationsuttryck 14-5 9. Mängd operationa union och intersektion är kommutativa E 1 E 2 = E 2 E 1 E 1 E 2 = E 2 E 1 10. Mängd operationa union och intersektion är assosiativa (E 1 E 2 ) E 3 = E 2 (E 1 E 3 ) (E 1 E 2 ) E 3 = E 2 (E 1 E 3 ) 11. Selektions operationen distribuerar över, och. Även σ θ (E 1 E 2 ) = σ θ (E 1 ) σ θ (E 2 ) σ θ (E 1 E 2 ) = σ θ (E 1 ) σ θ (E 2 ) σ θ (E 1 E 2 ) = σ θ (E 1 ) σ θ (E 2 ) σ θ (E 1 E 2 ) = σ θ (E 1 ) E 2 σ θ (E 1 E 2 ) = σ θ (E 1 ) E 2 12. Projektions operationen distribuerar över union. Π L (E 1 E 2 ) = (Π L (E 1 )) (Π L (E 2 )) Dessutom finns ekvivalensregler för utvidgade relationsalgebraiska operatorer

Frågeoptimering, Transformering av relationsuttryck 14-6 Ex.: Bestäm namnen på alla kunder som har ett konto vid någon gren belägen i Brooklyn. Π customer_name (σ branch_city = Brooklyn (branch account depositor)) Transfomera med regel 7a: σ θ (E 1 E 2 ) = (σ (E 1 )) E 2 0 1θ θ 0 1θ Π customer_name (σ branch_city = Brooklyn (branch)) (account depositor)) Tumregel: Utför selektion så tidigt som möjligt ty då reduseras storleken på de relationer som joinas Ex.: Bestäm namnen på alla kunder som har ett konto vid någon gren belägen i Brooklyn vars balans är över 1000. Π customer-name (σ branch_city = Brooklyn balance < 1000 (branch account depositor)) Transfomera med regel 6a: (E 1 E 2 ) E 3 = E 1 (E 2 E 3 ) Π customer-name (σ branch_city = Brooklyn balance < 1000 (branch account )) depositor) Transfomera med regel 7a Π customer_name (σ branch_city = Brooklyn (branch) σ balance < 1000 (account )) depositor)

Frågeoptimering, Transformering av relationsuttryck 14-7 Ex.: Projektionoperation Π customer_name ((σ barnch_city = "Brooklyn" (branch) account) depositor) ger en relation vars schema är (branch_name, branch_city, assets, account_numer, balance) Transition m.h.a. reglerna 8a och 8b; eliminera attribut som ej behövs från mellanresultat Π customer_name ((Π account_number ( σ barnch_city = "Brooklyn" (branch) account)) depositor) Tumregel: Genom att utföra projektion så tidigt som möjligt reduseras storleken på relationer (dvs. tuplernas storlek) som joinas. Ex.: Π customer_name ((σ barnch_city = "Brooklyn" (branch)) (account depositor)) account och depositor är stora relation jämfrört med σ barnch_city = "Brooklyn" (branch) Π customer_name ((σ barnch_city = "Brooklyn" (branch) account)) depositor)

Frågeoptimering, Enumerering av ekvivalenta uttryck 14-8 Enumerering av ekvivalenta uttryck Frågeoptimerare använder ekvivalensreglerna för att systematiskt generera uttryck ekvivalenta med det givna uttrycket: Alla ekvivalenta uttryck kan genereras genom att upprepat exekvera följande steg tills inga flere uttryck hittas: för varje uttryck som hittats tillsvidare, använd alla tillämpningsbara ekvivalensregler om ett nytt uttryck hittas lägg detta till de redan hittad. Ovanstående angreppssätt är mycket dyrt m.a.p. tid och utrymme. Utrymmeskravet reduseras genom att uttrycken delar gemensamma deluttryck i representationen dvs. de gemensamma delarna lagras bara på ett ställe. (Representationtekniskt problem) När ett uttryck genereras från ett annat m.h.a. en regel, är vanligen bara en del av de två trädena olika, resten är lika. Tidskravet reduseras genom att ej generera alla uttryck: Optimeraren kan genom att beakta evalueringskostnaderna hitta dåliga uttryksträd som inte behöver undersökas vidare. Π customer-name Π customer-name σ balance < 2500 customer Π account_number customer account σ balance < 2500 account

Frågeoptimering, Kostnads estimering 14-9 Kostnads estimering Kostnaden för varje operatorberäknas (kap 13) Statistisk information över relationerna (antal tupler, tupelstorlek, domäner o.dyl.) finns tillgängligt. Statistik för uttrycksresultat behöver estimeras. Ex.: Vilken är den bästa join-ordningen för r 1 r 2... r n (det finns (2(n-1))! / (n-1)! st, dvs. 665280 om n=7). För att undvika generering av alla join-ordningar används dynamisk programmering: beräkna den minsta-kostnads join-ordning för varje delmängd av {r 1, r 2,...,r n } bara en gång och lagra för framtida bruk: För att bestämma bästa planen för en mängd S av n relationer, beakta alla möjliga planer av formen S 1 (S S 1 ) där S 1 är en icke-tom delmängd av S. Beräkna rekursivt kostnader för att joina delmängder av S för att bestämma kostnaden av varje plan. Välj den billigaste av de 2 n - 1 alternativen. När en plan för någon delmängd beräknas, lagras den och återanvänds när den behövs igen.

Frågeoptimering, Val av evalueringsplan 14-10 Val av evalueringsplan En evalueringsplan definierar exakt vilken algoritm som används för varje operation, och hur exekveringen koordineras. Π customer_name (sort to remove duplicates) (hash join) (merge join) depositor σ branch_city = Brooklyn (use index 1) σ balance < 1000 (use linear scan) branch account Interaktionen av evalueringstekniker måste beaktas vid val av evalueringsplan: Att välja den billigaste algoritmen för varje enskild operation behöver ej ge det bästa totala resultatet. Merge-join kan vara dyrare än hash-join, men kan ge en sorterad output som reducerar kostnaden för en yttre nivås aggregering Nästlad-loop join kan ge möjlighet för pipelining. Frågeoptimerare inkorporerar element av två breda angreppsätt: Sök alla planer och välj den bästa på ett kostnadsbaserar sätt Använd heuristik för att välja en plan