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



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

Tentamen i Databasteknik

Tentamen i Databasteknik

Frågeoptimering. Frågeoptimering kapitel 14

Tentamen i Databasteknik

Tentamen. i Databasteknik. lördagen den 13 mars Tillåtna hjälpmedel: Allt upptänkligt material

Tentamen i. Databasteknik

Karlstads Universitet, Datavetenskap 1

Databaser Design och programmering Minnesteknik Minnesteknik, forts Utvecklingen Hårddisk Hårddisk, forts

Databaser - Design och programmering. Minnesteknik. Minnesteknik, forts. Hårddisk. Primärminne (kretsteknik) Fysisk design av databasen

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

Minnesteknik. Minnen lämpliga för databaser. Minnesteknik, forts. Databaser design och programmering. temporärt/flyktig Snabbt Dyrt

Karlstads Universitet, Datavetenskap 1

Idag. Databaskvalitet(??) Databaskvalitet... Databaskvalitet...

Tentamen för DD1370 Databasteknik och informationssystem

Databaser Design och programmering. Fysisk design av databasen att ta hänsyn till implementationsaspekter: minnesteknik filstrukturer indexering

Databaser Design och programmering. Fysisk design av databasen att ta hänsyn till implementationsaspekter: minnesteknik filstrukturer indexering

Idag. 1. Från modell till databasstruktur. 2. Prata med databaser (frågepsråket SQL)

Från verklighet via modell till databas. Idag. Testa reglerna på varuhusmodellen. Från verklighet via modell till databas

Tentamen DATABASTEKNIK - 1DL116

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

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

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Tentamen för DD1370 Databasteknik och informationssystem

Introduktion till frågespråket SQL (v0.91)

Tentamen för DD1370 Databasteknik och informationssystem

Programdesign, databasdesign. Databaser - Design och programmering. Funktioner. Relationsmodellen. Relation = generaliserad funktion.

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

Övningar i SQL. SQLAccess.doc Ove Lundgren

Fillagring och indexering

Tentamen för 1E1601. Måndag 10 mars 2003, kl Alla hjälpmedel tillåtna

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

Starta MySQL Query Browser

Föreläsning 1: Dekomposition, giriga algoritmer och dynamisk programmering

Tentamen för DD1370 Databasteknik och informationssystem

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information.

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

1.Lär känna MS SQL Observera. Tips. Förberedelse

Karlstads Universitet, Datavetenskap 1

Idag. Exempel. Exempel modellen (1) Exempel...

9. Between 10. Group by 11. Aggregatfunktionerna max, min, sum och avg 12. Nästlade sökningar

Databaser. Vad du ska lära dig: Ordlista

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

Databasspråket SQL - online.

Databaser - Design och programmering. Relationsmodellen. Relationer - som tabeller. Relationer som tabeller. Alternativa notationer: Relationsschema

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

Föreläsning 5 Innehåll. Val av algoritm och datastruktur. Analys av algoritmer. Tidsåtgång och problemets storlek

Föreläsning 5 Innehåll

Fiktiv tentamen för DD1370 Databasteknik och informationssystem

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

Tentamen. TDDB38 - Databasteknik

Frågor att lösa med SQL mot databasen kursdb_sql Sida 1 av 5

Lösningsförslag till Exempel tentamen

Innehåll. Föreläsning 12. Binärt sökträd. Binära sökträd. Flervägs sökträd. Balanserade binära sökträd. Sökträd Sökning. Sökning och Sökträd

Magnus Nielsen, IDA, Linköpings universitet

Lösningsförslag till fiktiv tentamen för DD1370 Databasteknik och informationssystem

Komplement till databasdelen på 1E1601. Kursmaterial

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

Tentamen för DD1370 Databasteknik och informationssystem

02/12/14. Databasteknik och informationssystem DD1370. Behövs Föreläsning 8? Dagens föreläsning. Om Lab 1. De 11 Stegen (Kokbok)

Databasspråket SQL - online.

Laborationer - databaser, EDAA20 Programmering och databaser

Lösningar till tentamen i EDAF75

Databasteknik. Vad är. Vad är databaser bra till? data? föreläsare: Kjell Lindqvist. och NADA. databaser? och. vad är de bra för?

EMPS(NAME, SALARY, DEPT)

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

Tentamen Databasmetodik DB:DSK/FK/DVK/ATD/SP/EIT mfl. äldre kurstillfällen 8 augusti 2013 kl. 9-13

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

Tentamen DATABASTEKNIK - 1DL116, 1MB025

Grunderna i SQL del 1

Databasutveckling Tabeller. tinyint 1 byte (0-255) Upp till 8 bytes

Föreläsning 5: Relationsmodellen

ÖVNING 10 2NF Hästnamn, KursId, StartDatum, SlutDatum KursId NY! 3NF Hästnamn, Art, NY! NY! NY! NY! KursId, StartDatum, SlutDatum KursId NY!

Tentamen för DD1370 Databasteknik och informationssystem

Tentamen Databasteknik

Objektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim Agenda (halvdag)

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

NORMALISERING. Mahmud Al Hakim

Databaser och. SQL, utsökningar mot flera tabeller TENTA. # radnr (#) studnr (#) kursnr * tentadatum * betyg

Sökning i ordnad lista. Sökning och sortering. Sökning med vaktpost i oordnad lista

Tommy Färnqvist, IDA, Linköpings universitet

Exempel-Tentamen III

Databaser och. SQL, utsökningar mot en tabell

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

Algoritmer och effektivitet. Föreläsning 5 Innehåll. Analys av algoritmer. Analys av algoritmer Tidskomplexitet. Algoritmer och effektivitet

Structured query language (SQL)

Design och underhåll av databaser

Structured Query Language (SQL)

Föreläsning 4 Dagens föreläsning går igenom

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

Laboration SQL. Kom igång.

Databaskunskap 7,5 högskolepoäng Provmoment: Ladokkod: Tentamen ges för:

1. SQL 2. Utsökningar mot flera tabeller. 4. IN-operatorn 5. Join 6. Kartesisk produkt 7. Tabellalias

Datalager och datautvinning

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14

Datastrukturer. föreläsning 10. Maps 1

Tentamen plus lösningsförslag

Tentamen Datastrukturer D DAT 036/INN960

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

Transkript:

Dagens föreläsning Vad du skall komma ihåg från tidigare föreläsningar Optimering av frågor Algebraisk omformulering Kostnadsberäkningar Evaluering av frågor Algoritmer för relationsoperatorer Beräkning av resultatets storlek KTH & SU, CSC Databasteknik Föreläsning 10 sid 1

Vad du skall komma ihåg från tidigare föreläsningar DML-delen av SQL Relationsalgebraiska operatorer Mappning av SQL-uttryck på relationsalgebra Indexering KTH & SU, CSC Databasteknik Föreläsning 10 sid 2

Data dictionary Databasen innehåller en beskrivning av sig själv. Denna beskrivning lagras i en databas, Data dictionary (DD). I DD finns information om: alla termer och deras typer, relationer, användare och deras rättigheter, indexfiler, rapporter, statistik, analys, filer, backup-filer, historik, återhämtningsinformation, program i systemet, in- och utdata till programmen. DD för varuhuset: RelName AttrName Domain ITerm ForKey FKRel FRITerm Anställd Namn VarChar(50) 1 no - - Anställd Chef VarChar(50) - yes Anställd Namn Anställd Lön Integer - no - - Anställd Avd VarChar(30) - yes Avdelning Avd Försäljning Avd VarChar(30) 1 yes Avdelning Avd Försäljning Varunr Smallint 2 yes Vara Varunr KTH & SU, CSC Databasteknik Föreläsning 10 sid 3

Evaluering av frågor Evaluering av frågor Fråga DD lexikal analys syntaxkontroll Data Data frågan på internt format (RA) optimering (evalueringsplan) kodgenerering frågan i körbar kod exekvering svaret (om det finns ett svar) KTH & SU, CSC Databasteknik Föreläsning 10 sid 4

Varför optimera? Ex: Vilka firmor levererar sportskor till sportavdelningen? B-trädsindex med partiell matchning av nyckeln företag (σ lager.varunr=vara.varunr vara.typ='sportskor' lager.avd='sport' (lager vara)) Antag att lager har 10 000 tupler och vara har 600. 1. tmp lager vara 10 000 tupler från lager 600 tupler från vara 6 000 000 tupler till tmp 2. σ lager.varunr=vara.varunr vara.typ='sportskor' lager.avd='sport' (tmp) 6 000 000 tupler filtreras genom primärminnet 50 tupler kvar i primärminnet 3. resultat företag 3 tupler kvar i primärminnet 12 010 600 accesser till sekundärminnet i värsta fall KTH & SU, CSC Databasteknik Föreläsning 10 sid 5

Varför optimera? företag ( σ avd='sport' ( lager varunr (σ typ='sportskor' (vara))) lager har 10 000 tupler, vara har 600. 1. tmp varunr (σ typ='sportskor' (vara)) 600 tupler från vara läses in med 600 läsningar från sekundärminnet 50 tupler till tmp 2. resultat företag (σ avd='sport' (lager tmp)) max 10000 tupler filtreras genom primärminnet 3 tupler kvar i primärminnet = 10600 accesser till sekundärminnet i värsta fall Det är klart att vi skall optimera! KTH & SU, CSC Databasteknik Föreläsning 10 sid 6

Transformationsregler 1. Kaskadering av σ. σc1 c2 c3 (R ) σc1(σc2(σc3( (R )))) 2. Kommutativitet hos σ. σc1(σc2(r )) σc2(σc1(r )). 3. Kaskader av. Lista1 ( Lista2 ( Lista3 ( (R )))) Lista1 (R ). 4. Kommutering av σ och. Lista (σ c (R )) σ c ( Lista (R )), om c opererar endast på de attribut som finns i listan. 5. Kommutativitet hos (eller ). R c S S c R. 6. Kommutering av σ och (eller ). Om attributen i villkoret c för selektionen endast kommer från R så: σ c (R S) σ c (R) S. 7. Kommutering av och (eller ). Om Lr är attribut i R och Ls är attribut i S och L = Lr Ls, så L (R c S) Lr (R) c Ls (S). Om joinvillkoret c innehåller attribut som inte finns i L så behövs en slutlig projektion, dvs om L Lr Ls så L (R c S ) L ( Lr (R ) c Ls (S )). KTH & SU, CSC Databasteknik Föreläsning 10 sid 7

Transformationsregler 8. Mängdoperationers kommutativitet. är kommutativa, men - är inte kommutativ. 9. Associativitet hos,. Om ϕ är en av,, eller så: (R ϕ S ) ϕ T R ϕ (S ϕ T ). 10. Kommutering av σ och mängdoperationer. σ kommuterar med,, och. Om ϕ är en av,,, eller så: σ c (R ϕ S ) σ c (R ) ϕ σ c (S ). 11. Kommutering av och mängdoperationer. kommuterar med,, och. Om ϕ är en av,,, eller så: L (R ϕ S ) L (R ) ϕ L (S ). 12. De Morgans lag: (c1 c2) ( c1) ( c2) (c1 c2) ( c1) ( c2) KTH & SU, CSC Databasteknik Föreläsning 10 sid 8

En heuristisk algoritm för optimering. Bygg ett initialt evalueringsträd. En enkel algoritm 1. Använd regel 1 för att kaskadera alla σ som har konjunktiva villkor. 2. Använd reglerna 2, 4, 6 och 10 för att flytta ner alla σ så långt som möjligt i trädet. 3. Kombinera med efterföljande σ till. 4. Använd reglerna 3, 4, 7 och 11 för att föra ner så långt som möjligt i trädet. 5. Använd regel 9 för att arrangera om trädets lövnoder så att de mest restriktiva exekveras först. Mest restriktiv = minst utrymme i primärminnet. 6. Slutligen, identifiera grupper som kan exekveras som en sammanhängande operation och gör rutiner för exekvering. KTH & SU, CSC Databasteknik Föreläsning 10 sid 9

Antag databas: Bok (ISBN, titel, förf, förl) Förläggare (Förl, adress, ort) Låntagare (Namn, adress, ort, kortnr) Lån (KortNr, ISBN, Datum) Ett enkelt exempel En virtuell vy men inte temporär vy, XLån, finns, skapad genom satsen create view XLån as select titel, förf, förl, Lån.ISBN, adress, ort, Lån.kortnr, datum from Lån, Låntagare, Bok where Lån.kortnr = Låntagare.kortnr and Bok.ISBN = Lån.ISBN dvs: f (σ g (Lån, Låntagare, Bok)) där f är titel, förf, förl, Lån.ISBN, adress, ort, Lån.kortnr, datum och g är Lån.kortnr = Låntagare.kortnr Bok.ISBN = Lån.ISBN KTH & SU, CSC Databasteknik Föreläsning 10 sid 10

Ett enkelt exempel, forts Vi vill veta vilka titlar som lånats ut mellan 050701 och 060701. Endast titlarna är intressanta. Kan ske genom select titel from XLån where datum > 050701 and datum < 060701; eller titel (σ datum > 050701 datum < 060701 (XLån)) Vi får ett evalueringsträd enligt: resultatbok titel σ datum > 050701 datum < 060701 f σ g Bok Lån Låntagare KTH & SU, CSC Databasteknik Föreläsning 10 sid 11

Ett enkelt exempel, forts resultatbok titel σ datum > 050701 σ datum < 060701 titel, förf, förl, Lån.ISBN, adress, ort, Lån.kortnr, datum σ Lån.kortnr = Låntagare.kortnr Bok.ISBN = Lån.ISBN Bok Lån Låntagare KTH & SU, CSC Databasteknik Föreläsning 10 sid 12

Ett enkelt exempel, forts a. splittra σ g i σ Bok.ISBN=Lån.ISBN och σ Låntagare.kortnr=Lån.kortnr. b. datum har endast med Lån att göra. Flytta ned till strax ovanför Lån. c. σ Låntagare.kortnr=Lån.kortnr har endast med nedre vänstra kartesiska prod att göra, för ned till strax ovanför denna. resultatbok titel σ Bok.ISBN = Lån.ISBN titel, förf, förl, Lån.ISBN, adress, ort, Lån.kortnr, datum σ Lån.kortnr = Låntagare.kortnr Bok σ datum > 050701 datum < 060701 Låntagare Lån KTH & SU, CSC Databasteknik Föreläsning 10 sid 13

Ett enkelt exempel, forts a. Kombinera titel och f samt använd reglerna 3 och 4 på res + σ Bok.ISBN=Lån.ISBN resultatbok titel σ Bok.ISBN = Lån.ISBN titel,bok.isbn, Lån.ISBN σ Lån.kortnr = Låntagare.kortnr Bok σ datum > 050701 datum < 060701 Låntagare Lån KTH & SU, CSC Databasteknik Föreläsning 10 sid 14

Ett enkelt exempel, forts Använd regel 7 på första kartesiska produkten och proj ovanför denna resultatbok titel σ Bok.ISBN = Lån.ISBN Lån.ISBN titel, Bok.ISBN σ Lån.kortnr = Låntagare.kortnr Bok σ datum > 050701 datum < 060701 Låntagare Lån KTH & SU, CSC Databasteknik Föreläsning 10 sid 15

Ett enkelt exempel, forts Använd regel 3 + 4 på proj + sel ovanför andra kartesiska produkten resultatbok titel σ Bok.ISBN = Lån.ISBN Lån.ISBN titel, Bok.ISBN σ Lån.kortnr = Låntagare.kortnr Lån.ISBN, Låntagare.kortnr, Lån.kortnr Bok σ datum > 050701 datum < 060701 Låntagare Lån KTH & SU, CSC Databasteknik Föreläsning 10 sid 16

Ett enkelt exempel, forts Använd regel 7 på andra kartesiska produkten och proj ovanför denna resultatbok titel σ Bok.ISBN = Lån.ISBN Lån.ISBN titel, Bok.ISBN σ Lån.kortnr = Låntagare.kortnr Bok Lån.ISBN, Lån.kortnr Låntagare.kortnr σ datum > 050701 datum < 060701 Lån Låntagare KTH & SU, CSC Databasteknik Föreläsning 10 sid 17

Ett enkelt exempel, forts Proj + sel + kartesisk prod på två ställen kan kombineras till naturlig-join (steg 4 i alg) resultatbok titel Lån.ISBN titel, ISBN Bok ISBN, kortnr σ datum > 050701 datum < 060701 Lån kortnr Låntagare KTH & SU, CSC Databasteknik Föreläsning 10 sid 18

Ett enkelt exempel, forts Ordna om lövnoderna så att minsta datamängden hamnar längst till vänster o s v resultatbok titel Lån.ISBN titel, ISBN Bok ISBN, kortnr σ datum > 050701 datum < 060701 Lån kortnr Låntagare KTH & SU, CSC Databasteknik Föreläsning 10 sid 19

Tidsuppskattning för operationer Antal blocköverföringar: b Tiden för att föra över ett block: t T Antal disksökningar: S Tiden för en sökning: t S Antal block som behövs för att lagra relationen R: b(r) Tiden för att söka igenom relationen R: b(r)*t T + t S Tiden för bearbetning i primärminnet är i allmänhet mycket mindre än diskhanteringen. KTH & SU, CSC Databasteknik Föreläsning 10 sid 20

Selektion Linjärsökning: b(r)*t T + t S efter nyckel: b(r) /2 *t T + t S men i värsta fall b(r)*t T + t S Binärsökning (om filen är sorterad): (log 2 b(r))*(t T + t S ) I båda fallen kan man behöva lagra resultatet på disk och då tillkommer denna kostnad. Selektiviteten hos ett villkor: 1/V(A, r) där V är antalet distinkta värden för attributet A i relationen r Storleken i block: 1/V(A, r)*n r /f r där n r är antalet tupler i relationen r och f r är blockningsfaktorn för r (antalet tupler i ett block) Antal block för en punktselektion 1/V(A, r)*n r /f r som måste mellanlagras till en kostnad av (1/V(A, r)*n r /f r )*t T + t S KTH & SU, CSC Databasteknik Föreläsning 10 sid 21

Selektion med hjälp av index B + -träd med höjden h. Primärindex Likhet i nyckel: Kostnad (h+1)*(t T + t S ) Likhet i ickenyckelattribut: Som linjärsökning. Sekundärindex (h+n)*(t T + t S ) där n är antalet tupler som selekteras Hash-index Primärindex Likhet i nyckel: Kostnad 2*(t T + t S ) Likhet i ickenyckelattribut: Som linjärsökning. Sekundärindex (n+1)*(t T + t S ) där n är antalet tupler som selekteras KTH & SU, CSC Databasteknik Föreläsning 10 sid 22

Sortering Vanligast: mergesort Två faser: Hitta sorterade följder Samsortera följder Antal blockläsningar/skrivningar: 2*B(R)*log 2 B(R) (om vi inte buffrar några block) Tiden blir då: (log 2 B(R))*(B(R)/4)*t S +(2*B(R)*log 2 B(R))*t T Här är det lite förenklade beräkningar jfrt med boken. KTH & SU, CSC Databasteknik Föreläsning 10 sid 23

Projektion Primärnyckel: Som sekventiell sökning Lagring av resultatet: n(x)/n(t)* b(r) antal block där n(a) är antalet byte för attributet/attributen X och n(t) är tupelstorleken i byte. Övriga attribut: Som för ovanstående men följt av eliminering av dubbletter. Dubbletter kan elimineras genom att sortera relationen eller med hjälp av hashing. Hash-baserad dubbletteliminering: Partitionera relationen m a p hash-värde för hela tupler. Varje partition läses in och varje unikt värde skrivs till resultatet. KTH & SU, CSC Databasteknik Föreläsning 10 sid 24

Join Nästlad loop: foreach r in R do foreach s in S do add(r s) I värsta fall (kartesisk produkt) n R *b(s)+ b(r) block läses och n R *n S /f resultat skrivs annars n R *b(s)+ b(r) block läses och (n R *n S /V(A, r))/f resultat där A är det selekterande attributet. Förbättring: Blockbaserad join: M-1 block används till R och ett block för S. S kommer att skannas b(r)/(m-1) ggr Index kan användas i den inre loopen för att undersöka villkoren för joinoperationen. KTH & SU, CSC Databasteknik Föreläsning 10 sid 25

Merge-join Kan används för naturlig- och equi-join R(X), S(Y) sorteras m a p X Y. R S A B 5 2 1 3 13 6 B C 3 7 4 2 6 9 Vi behöver bara genomlöpa relationerna en gång+sortering KTH & SU, CSC Databasteknik Föreläsning 10 sid 26

Hash-join Hasha alla tupler till M hinkar m a p X Y. För varje par av hinkar med samma hash-värde skriv den konstruerade tupeln, bestående av unika kombinationer, till resultatet Antal blockoperationer: 3*(b(R) + b(s)) Obs 1: Alla tupler med samma värde på H(X Y) ligger i samma hink 2: Alla tupler i en hink måste ligga i primärminnet så antalet hinkar måste väljas efter utrymmet i PM. KTH & SU, CSC Databasteknik Föreläsning 10 sid 27

Gruppering och aggregering 1 Sortera med det/de grupperande attributet/en som sorteringsbegrepp. Applicera den aggregerande funktionen för varje värde på det grupperande attributet. Skriv till resultatet värdet av den aggregerande funktionen och det/de grupperande attributet/en 2 Använd hashing för att skapa grupperingen. För varje hink appliceras den aggregerande funktionen Antalet blockoperationer: 3*b(R) + resultat KTH & SU, CSC Databasteknik Föreläsning 10 sid 28

Optimeringskostnad Heuristisk optimering att föredra men Kostnadsberäkningar ger en bättre evaluseringsplan. Pipelining (utdata från en algoritm tas som indata till en annan) kan minska kostnaden. Minnesanvändningen viktig för exekveringen. Indexering kan både minska och öka kostnaden Materialiserade vyer (en vy som lagrar värden) kan minska kostnaden (såväl som öka) men har nackdelen att den måste synkroniseras med underliggande relationer. KTH & SU, CSC Databasteknik Föreläsning 10 sid 29

Det viktigaste på denna föreläsning Förstå principerna för optimering Flytta selektion och projektion så nära basrelationerna som möjligt Kombinera selektion och kartesisk produkt till join Ordna lövnoderna efter storleksordning så att förstaoperanden om möjligt kan ligga i PM Beräkning av antalet blockoperationer för de grundläggande operationerna Algebraiska ekvivalenser KTH & SU, CSC Databasteknik Föreläsning 10 sid 30