Query processing Van SQL-query naar resultaat Een kijkje onder de motorkap.

Slides:



Advertisements
Verwante presentaties
Computervaardigheden
Advertisements

PHP & MYSQL LES 03 PHP & DATABASES. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
1 Hashtabellen Datastructuren. 2 Dit onderwerp Direct-access-tabellen Hashtabellen –Oplossen van botsingen met “ketens” (chaining) –Analyse –Oplossen.
Normaliseren Datamodellering 2006.
Hashing Inhoud Hashing Hashtable Hash function Collision Toepassing van klassieke ADT’s, algoritmes en runtime overwegingen.
Datastructuren Analyse van Algoritmen en O
Datastructuren Analyse van Algoritmen en O
Inleiding Databanken: oefeningen 4 Sven Casteleyn 4 Lokaal: 6G HomePage: te bereiken via
Computervaardigheden en Programmatie Universiteit AntwerpenDatabank - Basis 4.1 Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen (II) College 6.
 Ongeveer auto’s in Nederland  Query: zoek op kenteken  Aannames ◦ Een tuple (record) kost ongeveer 400 bytes ◦ Een disk block bevat 8.
Rekenregels voor wortels
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
Relationele databases: Fysiek databaseontwerp en SQL
Neurale Netwerken Kunstmatige Intelligentie Rijksuniversiteit Groningen April 2005.
Opleiding Kunstmatige Intelligentie cursus Databases voor AI
Martin Caminada / Wiebren de Jonge Vrije Universiteit, Amsterdam
Databases I (H. 1) Wiebren de Jonge Vrije Universiteit, Amsterdam Voorlopige versie 2003.
Optuigen van datastructuren
Spatial subgroup mining
Datastructuren Sorteren, zoeken en tijdsanalyse
Databases.
Hashtabellen Datastructuren. 2 Dit onderwerp Direct-access-tabellen Hashtabellen –Oplossen van botsingen met “ketens” (chaining) –Analyse –Oplossen van.
1 Over het examen (1): Modus Mondeling met schriftelijke voorbereiding 4 uur, 3 onderdelen: –Modellering (  schriftelijk, dan mondeling) –Queries / relationeel.
Sorteeralgoritmen. Sorteren: aanpak 1 Hoe ga je een rij getallen sorteren met PC? Sorteren door selectie (= selection sort): Zoek de kleinste waarde Sorteer.
Shortest path with negative arc-costs allowed. Dijkstra?
Logistics: a driver for innovation Low costs High value Flexibility now and later Superior technology Timwood - T > No transport - I > No Inventory - M.
Deltion College Engels B1 Lezen [no. 001] can-do : 2 products compared.
Computervaardigheden Hoofdstuk 4 — Databank (Basis)
Hoofdstuk 3 - Conditionele logica
Deltion College Engels C1 Schrijven [Edu/007] thema: Mind twister or how to write an essay… can-do : kan heldere, goed gestructureerde uiteenzetting schrijven.
Deltion College Engels C1 Schrijven [Edu/006] thema: Dear editor,
Deltion College Engels B2 Lezen [Edu/003] thema: Topical News Lessons: The Onestop Magazine can-do: kan artikelen en rapporten begrijpen die gaan over.
AWK A Pattern scanning and processing language made by Aho Weinberger Kernighan and explained by Albert Montijn.
Join Indices … as a tool for Spatial Datamining. Inhoud Inleiding Spatial Relations (Spatial) Join Index Implementatie Conclusie.
Deltion College Engels B1 Lezen [Edu/002] thema: But I ‘ve read it in… can-do : kan hoofdthema en belangrijkste argumenten begrijpen van eenvoudige teksten.
PART 2: QIN PET Phantom Segmentation Challenge Instructions 1.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
GegevensAnalyse Les 2: Bouwstenen en bouwen. CUSTOMER: The Entity Class and Two Entity Instances.
ANALYSE 3 INFANL01-3 WEEK 6 CMI Informatica. ANALYSE 3- INFANL01-3 ▸ Vorige les ▸ Subqueries met correlaties ▸ Subqueries zonder correlaties ▸ Views ▸
1 KPN Mobiel – Introductie Repository Object Browser & Designer 10 Designer 10g & Repository Object Browser Maandag 28 februari 2005 Lucas Jellema (AMIS)
Tentamen Data Mining Voorbereiding. Tentamen  4 januari 2016  14:00 – 17:00  zaal
Wat is SQL (1)? SQL (Structured Query Language):  is een zeer krachtige taal met een beperkt vocabulaire (aantal ‘woorden’)  is declaratief (‘WAT’ niet.
SQL Performance Analyzer Inschatten performance impact van wijzigingen Bram van der Vos
A historical database: finding our possibilities and limits Case: Oosterhesselen Erwin H. Karel/Richard Paping (Digital Humanities Pitch April.
Minimum Opspannende Bomen Algoritmiek. 2 Inhoud Het minimum opspannende bomen probleem Een principe om een minimum opspannende boom te laten groeien Twee.
The Research Process: the first steps to start your reseach project. Graduation Preparation
DOELEN VAN W&T ONDERWIJS
– Software development fundamentals
Key Process Indicator Sonja de Bruin
Minimum Opspannende Bomen
Performance Tuning SSIS packages
Processing Structured Hypermedia
Werkwijze Hoe zullen we als groep docenten te werk gaan?
LauwersCollege Buitenpost Informatica
Michaël Hompus Principal developer,
VOS-identificatie en kwantitatieve bepaling d.m.v. gaschromatografie
G-CLOUD SHAREPOINT USER GROUP
SQL Les February 2019.
SQL Les 3 17 February 2019.
SQL Les 3 23 February 2019.
SQL Les 7 24 February 2019.
SQL Les 6 14 April 2019.
SQL Les 9 12 May 2019.
SQL Les 4 12 May 2019.
– Software development fundamentals
SQL Les May 2019.
VOS-identificatie en kwantitatieve bepaling d.m.v. gaschromatografie
Transcript van de presentatie:

Query processing Van SQL-query naar resultaat Een kijkje onder de motorkap

Algebraïsche operatoren Klassieke dichotomie voor RA: sets or bags? Theorie van relationele databases: tabel is een set Praktijk (SQL): tabel is een bag B AB B 1 2 R π B (R) π B (R)

Bags (multisets) versus sets Union {a,b,c} U {a,a,c,d} = {a,a,a,b,c,c,d} Intersection {a,a,a,b,c,c,d} ∩ {a,a,b,e} = {a,a,b} Difference (minus) {a,a,a,b,c,c,d} - {a,a,b,e} = {a,c,c,d}

Nieuwe operatoren: projectie Extended projectie AB A+BA1A R π A+B,A,A (R)

Nieuwe operatoren: sorteren  τ L (R) = lijst van tupels in R gesorteerd op attributen in L R τ C,B↑ (R) BC CB

Grouping en aggregate functions WieWaarPrijs EasyjetBarcelona65 RyanairBarcelona59 KLMBarcelona80 EasyjetLondon45 LufthansaLondon58 KLMParijs69 WaarMinPrijs Barcelona59 London45 Parijs69 Trip Γ waar, min(prijs) (Trip)

 Describe how a Selection distributes over a Minus  Describe how a GroupBy distributes over a Union  Rewrite the following expression for schema R(ABCD), S(AEFG), T(EHK)

 We gaan kijken naar datastructuren en algoritmen ten behoeve van het uitvoeren van algebraïsche operatoren  (Blok 4 INFODS) Algoritmische analyse in main memory: tel het aantal stappen van het programma ( :=, < )  Veralgemeniseer dit naar N, de lengte van de input  Onze benadering: tel het aantal keren dat disk access (IO) wordt gedaan en negeer de data processing in CPU en main memory

Hoe doe je … duplicate elimination? methode 1: sorteren external sorting van R kan gedaan worden via merge sort methode 2: hashing 1.hash tupels naar table van M buckets (daarvoor heb je M buffer pages nodig) 2.haal buckets één voor één naar main-memory en verwijder duplicaten IO: 3 * B, met B = het aantal blocks nodig om R op te slaan

External merge sort: sort R[A,B] on A

Hoe doe je … een selectie? S := σ A1 = C1, …, An = Cn (R) Verschillende access-paden Scan de gehele tabel en check de condities tupelgewijs Gebruik een index waarvan het attribuut bevat is in A 1,…, A n

Hoe doe je … een selectie? S := σ A1 = C1, …, An = Cn (R) Stel je hebt meerdere goede accesspaden (bijv. twee indexen) Optie 1: gebruik het meest selectieve access-pad Optie 2: gebruik twee (of meer) access- paden en bereken de intersectie

Statistics voor kostenschattingen T(R): het aantal tuples van R B(R): het aantal blocks van R V(R,A): het aantal verschillende waarden van attribuut A in R Uitdaging: doorrekenen effecten van algebraïsche operatoren voor statistics van tussenresultaten

Statistics voor kostenschattingen R’ := σ A=c (R) T(R’) = … T(R’) = T(R)/V(R,A) Veronderstelling: homogene verdeling waarden domein(A) Nauwkeuriger: histogrammen Prijskaartje: onderhoud Alternatief: sampling

Statistics voor kostenschattingen U := R S θ: R.A = S.A T(U) = … T(U) = T(R)*T(S)/V(S,A) T(U) = T(S)*T(R)/V(R,A) Kies minimum van beide ?!

Hoe doe je … een join? T := R S θ: R.A = S.A

Hoe doe je … een join? T := R S θ: R.A = S.A Tuple nested-loop Block-nested loop Index-nested loop Sort-Merge Hash-Join Buffer: M pages/blocks

Hoe doe je … een join? Block-nested loop S = smallest relation (nr of blocks) foreach chunk van M-1 blocks van S do lees deze blocks in main memory; foreach block B2 van R do { lees B2 in overgebleven bufferblok; check alle mogelijke combinaties van tupels t1 in chunk en t2 in B2; als t1.A = t2.A, schrijf dan de join van deze tuples naar output } IO: B(S) + B(R) * ┌ B(S)/(M-1) ┐

Hoe doe je … een join? Index-nested loop aanname: index op S.A foreach block B van R do foreach tupel t in B do { stel t.A = a; gebruik de index om alle t2 in S te zoeken met t2.A = a; schrijf de join van t met elke t2 weg; }

Hoe doe je … een join? Index-nested loop c = kosten access via index (~2 voor B-tree) μ = gem. aantal gevonden tupels (schatten uit statistics) IO: B(R) + (c + μ) T(R) μ ~= T(S)/V(S,A) Als A key is in S: μ = 1

Hoe doe je … een join? Sort-merge 1.(Indien nodig) sorteer R op A 2.(Indien nodig) sorteer S op A 3. repeat vul de buffer met de blocks van R en S die de kleinste gemeenschappelijke waarde voor R.A en S.A bevatten; join de tupels in deze blocks; until restant R of restant S leeg

Hoe doe je … een join? Sort-merge AB a11 b12 a13 c14 c15 a16 AC b21 a22 c23 b24 c25 a26

1. Sort AB a11 a13 a16 b12 c14 c15 AC a22 a26 b21 b24 c23 c25

2. Merge buffer (mem) AB a11 a13 a16 b12 c14 c15 AC a22 a26 b21 b24 c23 c25 AB a11 a13 a16 AC a22 a26 b21

2. Merge buffer (mem) AB a11 a13 a16 b12 c14 c15 AC a22 a26 b21 b24 c23 c25 ABC a1122 a1126 a1322 a1326 a1622 a1626 AB a11 a13 a16 AC a22 a26 b21

2. Merge buffer (mem) AB a11 a13 a16 b12 c14 c15 AC a22 a26 b21 b24 c23 c25 AB b12 c14 c15 AC b21 b24 c23 ABC a1122 a1126 a1322 a1326 a1622 a1626

2. Merge buffer (mem) AB a11 a13 a16 b12 c14 c15 AC a22 a26 b21 b24 c23 c25 AB b12 c14 c15 AC b21 b24 c23 ABC ……… a1626 b1221 b1224

2. Merge buffer (mem) AB a11 a13 a16 b12 c14 c15 AC a22 a26 b21 b24 c23 c25 AB c14 c15 AC c23 c25 ABC ……… b1224

2. Merge buffer (mem) AB a11 a13 a16 b12 c14 c15 AC a22 a26 b21 b24 c23 c25 AB c14 c15 AC c23 c25 ABC ……… b1224 c1423 c1425 c1523 c1525

Hoe doe je … een join? Hash Join 1.Kies een hash-functie voor het domein van A 2.Kies de grootte M van de hash-table 3.Hash elk tupel van R naar het corresponderende bucket 4.Hash elk tupel van S naar het corresponderende bucket 5.Haal elk bucket naar main-memory en construeer de resultaat-tupels

Join R[A,B] with S[A,C] h(a) = a DIV 10 AB 12a 3b 29c 7d 13e 12f 27g AC 29h 7i 8j 28k 12l

Hash Join on A AB 12a 3b 29c 7d 13e 12f 27g AC 29h 7i 8j 28k 12l Bucket: h(a) = 0 Bucket: h(a) = 1 Bucket: h(a) = 2 AB 3b 7d AC 7i 8j AB 12a 13e 12f AC l AB 29c 27g AC 29h 28k

Hash Join on A Bucket: h(a) = 0 Bucket: h(a) = 1 Bucket: h(a) = 2 AB 3b 7d AC 7i 8j AB 12a 13e 12f AC l AB 29c 27g AC 29h 28k Join each bucket in main memory: AB 3b 7d AC 7i 8j ABC 7di adds:

Bucket: h(a) = 0 Bucket: h(a) = 1 Bucket: h(a) = 2 AB 3b 7d AC 7i 8j AB 12a 13e 12f AC l AB 29c 27g AC 29h 28k Join each bucket in main memory: ABC 7di 12al fl adds: AB 12a 13e 12f AC l

Bucket: h(a) = 0 Bucket: h(a) = 1 Bucket: h(a) = 2 AB 3b 7d AC 7i 8j AB 12a 13e 12f AC l AB 29c 27g AC 29h 28k Join each bucket in main memory: ABC 7di 12al fl 29ch adds: AB 29c 27g AC 29h 28k

Hash Join on A: analysis R and S fit in B(R) and B(S) blocks Scanning R and S to hash the tuples requires B(R) + B(S) disk accesses Writing tuples to hash table (using window block for each bucket) requires B(R) + B(S) disk accesses Fetching each bucket for joining requires (roughly) B(R) + B(S) disk accesses for reading Ignore writing resulting tuples in analysis (all methods have to do that) IO = 3 *(B(R) + B(S))

Physical tuning Presence of physical structures facilitates efficient query processing Possibilities: indexes keeping tables sorted on a specific attribute keeping tables clustered on a specific index maintaining materialized views Task for the DBA: monitor performance and reconsider physical database organization Challenge: automatic support for optimizing physical database organization

Dual architecture: OLTP vs OLAP OLTP = On Line Transaction Processing High volumes of small updating transactions, often in combination with simple queries to identify primary key values Typical domain: support of commercial activities Real time performance requirements High requirements with respect to transaction integrity: concurrency, recovery, constraint satisfaction Term: “production database” Relatively low number of indexes

Dual architecture: OLTP vs OLAP OLAP = On Line Analytical Processing Low volumes of massive read-only queries, often changing perspective (sales per week, month, year, article, region, …) Typical domain: management information systems No real time performance requirements, although … No updates, no transaction processing; periodical reloading of preprocessed snapshots from production database Physical organization tuned toward read queries: many indices, materialized views, precomputed aggregates, … Term: “data warehouse”

Beyond OLAP: data mining Discovery of interesting patterns and models in data bases

Data mining example Market basket analysis: Find groups of products that are often bought together

Data mining example Market basket analysis folklore: diapers & beer