Effektiv eksekvering av spørsmål

Like dokumenter
Effektiv eksekvering av spørsmål

Effektiv eksekvering av spørsmål

Effektiv eksekvering av spørsmål

Effektiv eksekvering av spørsmål

Spørsmålskompilering del 1

Spørsmålskompilering del 2

Spørsmålskompilering del 1

DBS18 - Strategier for Query-prosessering

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Spørsmålskompilering

Relasjonsalgebraen. Algebra

Spørsmålskompilering del 2

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk INF Ellen Munthe-Kaas

Spørsmålskompilering. Basert på foiler av Hector Garcia-Molina

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas

INF1300 Introduksjon til databaser

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ragnar Normann

UNIVERSITETET RELASJONSALGEBRA. Regning g med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk INF Ellen Munthe-Kaas

INF1300 Relasjonsalgebra og SQL, mengder og bager. Lysark for forelesning v. 2.1

UNIVERSITETET. Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Hashliknende strukturer.

UNIVERSITETET I OSLO. Oppskriftsbok. FDer og MVDer Relasjonsalgebra. Institutt for Informatikk. INF3100 Ellen Munthe-Kaas 1

Oppskriftsbok. FDer og MVDer - oversikt: se s. 3 Relasjonsalgebra - oversikt: se s. 45

UNIVERSITETET. Relasjonsalgebra. INF Ragnhild Kobro Runde

INF1300 Relasjonsalgebra. Et matematisk fundament for å forstå SQL-setninger

Relasjonsalgebra Kopi av lysark om relasjonsalgebra. Vi går igjennom denne for å lage et matematisk fundament for forståelsen av hvordan

UNIVERSITETET I OSLO. Indeksering. Hvordan finne et element raskt? Institutt for Informatikk. INF Ellen Munthe-Kaas

Spørsmålskompilering. Basert på foiler av Hector Garcia-Molina

Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Treliknende strukturer Hashliknende strukturer Bitmapindekser

INF3100 V2018 Obligatorisk oppgave nr. 2

Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Trestrukturer Hashliknende strukturer Bitmapindekser

Repetisjonsforelesning, SQL og utover

UNIVERSITETET. Indeksering. Hvordan finne et element raskt? Vera Goebel, Ellen Munthe-Kaas

Oppgave 1 a. INF1020 Algoritmer og datastrukturer. Oppgave 1 b

UNIVERSITETET I OSLO SQL. Structured Query Language. (The intergalactic dataspeak) Institutt for Informatikk. INF Ragnar Normann 1

Obligatorisk oppgave 1 INF1020 h2005

Logaritmiske sorteringsalgoritmer

Andre sett obligatoriske oppgaver iinf3100v2011

Hvor raskt klarer vi å sortere?

Eksamensoppgave i TDT4225 Lagring og behandling av store datamengder

UNIVERSITETET I OSLO SQL. Structured Query Language. (The intergalactic dataspeak) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ragnar Normann 1

Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Trestrukturer Hashliknende strukturer Bitmapindekser

UNIVERSITETET I OSLO SQL. Structured Query Language. (The intergalactic dataspeak) INF Ellen Munthe-Kaas 1. Institutt for Informatikk

Oppgave 1a Definer følgende begreper: Nøkkel, supernøkkel og funksjonell avhengighet.

Heapsort. Lars Vidar Magnusson Kapittel 6 Heaps Heapsort Prioritetskøer

Andre sett obligatoriske oppgaver i INF3100 V2012

Python: Rekursjon (og programmering av algoritmer) Python-bok: Kapittel 12 + teoribok om Algoritmer

Relasjonsdatabasedesign

IN3020 V2019 Obligatorisk oppgave nr. 1

INF2220: Time 12 - Sortering

Andre sett obligatoriske oppgaver i INF3100 V2013

UNIVERSITETET. Relasjonsdatabasedesign

Generelt om permanent lagring og filsystemer

Binære trær: Noen algoritmer og anvendelser

INF1020 Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

INF2220: Forelesning 2

INF Algoritmer og datastrukturer

Oppgave 1 Datamodellering 25 %

INF Algoritmer og datastrukturer

Mengdelære INF1800 LOGIKK OG BEREGNBARHET FORELESNING 2: MENGDELÆRE. Læreboken. Mengder. Definisjon (Mengde) Roger Antonsen

Først litt praktisk info. Sorteringsmetoder. Nordisk mesterskap i programmering (NCPC) Agenda

Sorteringsproblemet. Gitt en array A med n elementer som kan sammenlignes med hverandre:

Relasjonsdatabasedesign

INF1800 LOGIKK OG BEREGNBARHET

UNIVERSITETET I OSLO

Søkeproblemet. Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke?

Hashing. INF Algoritmer og datastrukturer HASHING. Hashtabeller

INF Algoritmer og datastrukturer

Relasjonsdatabasedesign

Relasjonsdatabasedesign

Datastrukturer for rask søking

Databaser. Relasjonsmodellen 2 Læreboka: Kap. 2 Relasjonsmodellen

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

Generelle Tips. INF Algoritmer og datastrukturer. Åpen og Lukket Hashing. Hashfunksjoner. Du blir bedømt etter hva du viser at du kan

UNIVERSITETET SQL. Structured Query Language (forts.) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

INF Algoritmer og datastrukturer. Hva er INF2220? Algoritmer og datastrukturer

Relasjonsdatabasedesign

INF1010 notat: Binærsøking og quicksort

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Relasjonsdatabasedesign. Ekstramateriale: Normalformer utover 4NF (ikke pensum)

Øvingsforelesning 6. Sorteringsalgoritmer. Kristian Veøy

Normalformer utover 4NF (ikke pensum)

Normalisering. ER-modell

Dagens plan: INF Algoritmer og datastrukturer. Eksempel. Binære Relasjoner

Relasjonsdatabasedesign

INF2220: Gruppe me 2. Mathias Lohne Høsten 2017

Notater til INF2220 Eksamen

Relasjonsdatabasedesign

INF Algoritmer og datastrukturer

TDT4105 Informasjonsteknologi, grunnkurs

Læringsmål og pensum. Algoritmeeffektivitet

TDT4225 Lagring og behandling av store datamengder

TDT4110 Informasjonsteknologi grunnkurs: Tema: Algoritmer i praksis. Professor Alf Inge Wang

NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013

deeegimnoorrrsstt Sjette forelesning

IN Algoritmer og datastrukturer

UNIVERSITETET I OSLO SQL. Structured Query Language. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

... Når internminnet blir for lite. Dagens plan: Løsning: Utvidbar hashing. hash(x) katalog. O modellen er ikke lenger gyldig ved

Transkript:

UNIVERSITETET I OSLO Effektiv eksekvering av spørsmål Spørsmålshåndtering Modell for kostnadsberegning Kostnad for basisoperasjoner Implementasjonsalgoritmer Institutt for Informatikk INF3100 21.3.2014 Ellen Munthe-Kaas 1

Spørsmålshåndtering SQL-spørring metadata Spørsmålskompilering Spørsmålseksekvering spørreplan data INF3100 21.3.2014 Ellen Munthe-Kaas 2

Spørsmålskompilering SQL-spørring Parsering parseringstre Optimalisering Omskriving logisk spørreplan Generering av data fysisk plan fysisk spørreplan Eksekvering av planen INF3100 21.3.2014 Ellen Munthe-Kaas 3

Fysiske operatorer En spørring består av et relasjonsalgebrauttrykk. En fysisk spørreplan implementeres av et sett operatorer (algoritmer) tilsvarende operatorene fra relasjonsalgebraen. I tillegg trenger vi basisoperatorer for å lese (skanne) en relasjon, sortere en relasjon osv. For å kunne velge en god plan, må vi kunne estimere kostnaden til hver operator. Vi vil bruke antall disk-io og antar generelt at Operandene må initielt hentes fra disk. Resultatet brukes direkte fra minnet. Andre kostnader kan ignoreres. INF3100 21.3.2014 Ellen Munthe-Kaas 4

Kostnadsparametre Hvilken mekanisme som har lavest kostnad, avhenger av flere faktorer, inkludert Antall tilgjengelige blokker i minnet, M Om det finnes indekser, og hva slags. Layout på disken og spesielle diskegenskaper.... For en relasjon R trenger vi i tillegg å vite Antall blokker som kreves for å lagre alle tuplene, B R Antall tupler i R, T R Antall distinkte verdier for et attributt a, V R (a) Gjennomsnittlig antall tupler som er like på a, er da T R /V R (a) INF3100 21.3.2014 Ellen Munthe-Kaas 5

Faktorer som øker kostnaden spredt (scattered) Bruk av indeks som ikke ligger i minnet. Ideelt sett skal tuplene til en relasjon ligge tettpakket (clustered) og derfor oppta B blokker. Men: Et sett med tupler som passer inn i B blokker, kan likevel bruke B+1 blokker ved at de ikke starter på begynnelsen av den første blokken. Blokkene kan inneholde ledig plass for innsetting av nye tupler. Data kan være sortert og gruppert, med hver gruppe lagret i separate blokker. Relasjonen kan være lagret sammenfiltret med andre. Vi vil generelt ikke inkludere disse faktorene i våre estimater. INF3100 21.3.2014 Ellen Munthe-Kaas 6

Kostnad for basisoperasjoner Kostnaden for å lese en diskblokk er 1 disk-io Kostnaden for å skrive en diskblokk er 1 disk-io Oppdatering koster 2 disk-io Tre fundamentale operasjoner: Usortert innlesning av en relasjon R: Kostnaden avhenger av lagringen Tettpakket (clustered) relasjon B R disk-io Spredt (scattered) relasjon worst-case T R disk-io Sortering Hashpartisjonering Vi vil generelt anta tettpakkede relasjoner. INF3100 21.3.2014 Ellen Munthe-Kaas 7

Sortering Sort-scan leser en relasjon R og returnerer R i sortert rekkefølge mhp. en mengde attributter X. Hvis R har en B-tre-indeks på X, kan denne brukes til å traversere tuplene i R i sortert rekkefølge Hvis hele R får plass i minnet, bruk en effektiv sorteringsalgoritme kostnad B R disk-io Hvis R er for stor til å få plass i minnet, må vi bruke en sorteringsalgoritme som håndterer data i flere pass Ofte brukt: two-phase multiway merge sort (TPMMS) INF3100 21.3.2014 Ellen Munthe-Kaas 8

Two-Phase Multiway Merge Sort (TPMMS) Fase 1: Sorter deler av relasjonen (så mye som det er plass til i minnet) om gangen. Fyll alle tilgjengelige minneblokker med blokker som inneholder relasjonen. Sorter dette utsnittet i minnet. Skriv det sorterte resultatet (en subliste) tilbake til disk. Gjenta til alle blokkene er lest og alle postene er sortert i sublister. Kostnad 2B R, dvs alle blokkene er både lest og skrevet. INF3100 21.3.2014 Ellen Munthe-Kaas 9

Two-Phase Multiway Merge Sort (TPMMS) Fase 2: Flett (merge) alle de sorterte sublistene til én sortert liste ved gjentatt å gjøre følgende: Les den første blokken fra hver subliste inn i minnet og sammenlign det første elementet i hver blokk. Plasser det minste elementet i den endelige listen og fjern elementet fra sublisten. Hent inn nye blokker fra hver subliste ved behov. Kostnad B R Total kostnad 3B R Forutsetning: Antall sublister må være mindre eller lik antall tilgjengelige minneblokker: B R /M M, dvs. M B R INF3100 21.3.2014 Ellen Munthe-Kaas 10

Hashpartisjonering Hashfunksjonen samler tupler som skal ses på i sammenheng. Med M tilgjengelige buffere: Bruk M-1 buffere for buckets, 1 for å lese diskblokker Algoritme: FOR hver blokk b i relasjon R { les b inn i buffer M FOR hvert tuppel t i b { IF NOT plass i bucket h(t) { kopier bucket h(t) til disk initialiser ny blokk for bucket h(t) } kopier t til bucket h(t) } } FOR hver ikketom bucket { skriv bucket til disk } Kostnad 2B R les alle data og skriv dem partisjonert tilbake. (NB: Dette inkluderer altså skriving tilbake!) INF3100 21.3.2014 Ellen Munthe-Kaas 11

Eksekvering av spørsmål Tre hovedklasser med algoritmer: sorteringsbaserte hashbaserte indeksbaserte I tillegg kan kostnad og kompleksitet deles inn i ulike nivåer en-passalgoritmer data passer i minnet, leses bare en gang fra disk. to-passalgoritmer data for stort for minnet, les data, prosesser, skriv tilbake, les på nytt n-passalgoritmer rekursive generaliseringer av to-passalgoritmer for metoder som trenger flere pass over hele datasettet INF3100 21.3.2014 Ellen Munthe-Kaas 12

Ulike grupper operatorer tuppel-om-gangen, unære operasjoner: seleksjon (σ) projeksjon (π) full-relasjon, unære operasjoner: gruppering (γ) duplikat-eliminasjon (δ) full-relasjon, binære operasjoner: sett og bag union ( ) sett og bag snitt ( ) sett og bag differanse ( ) join ( ) produkt ( ) Vi skal se på flere måter å implementere disse operatorene ved hjelp av ulike algoritmer og ulike antall pass. INF3100 21.3.2014 Ellen Munthe-Kaas 13

Seleksjon og projeksjon: Tuppel-om-gangen-operatorer Både seleksjon (σ) og projeksjon (π) har opplagte algoritmer uavhengig av om relasjonen passer i minnet eller ikke: Hent en og en blokk inn i minnet og prosesser hvert tuppel i blokken. Eneste krav til minnet er M 1 for inputbufferet. Kostnaden avhenger av hvor R ligger: i minnet 0 på disk, typisk B R disk-io hvis R ligger tettpakket T R disk-io (worst-case) hvis R ligger spredt INF3100 21.3.2014 Ellen Munthe-Kaas Merk at vi bare foreleser utvalgte deler og oppsummeringer! For flere algoritmer, se læreboken 14

Seleksjon: Worst-case Worst-case-eksempel: T R = 20.000, B R = 1000, σ a = v (R) ingen indeks R tettpakket hent alle blokkene 1000 disk-io R spredt alle tuplene er på forskjellige blokker 20.000 disk-io indeks, R spredt hent T R / V R (a) blokker V R (a) = 100 20.000 / 100 = 200 disk-io V R (a) = 10 20.000 / 10 = 2000 disk-io clusterindeks (R tettpakket) hent B R / V R (a) blokker V R (a) = 100 1000 / 100 = 10 disk-io V R (a) = 10 1000 / 10 = 100 disk-io V(R, a) = 20.000, dvs. a er en kandidatnøkkel 1 disk-io INF3100 21.3.2014 Ellen Munthe-Kaas 15

Duplikateliminasjon (δ): En-pass Duplikateliminasjon (δ) kan utføres ved å lese en blokk om gangen og for hvert tuppel kopiere til output-buffer hvis det er første forekomst ignorere hvis vi har sett et duplikat Krever en kopi av hvert tuppel i minnet for sammenligning. Total kostnad: B R Minnekrav: 1 blokk til R, B δ(r) blokker til å holde en kopi av hvert tuppel der δ(r) er antall forskjellige tupler i R, så M 1 + B δ(r) INF3100 21.3.2014 Ellen Munthe-Kaas 16

Duplikateliminasjon (δ): To-pass Sorteringsbasert algoritme: Tilsvarende Two-Phase Multiway Merge Sort (TPMMS) Les M blokker inn i minnet av gangen. Sortert disse M blokkene og skriv sublisten til disk. I stedet for å flette sublistene, kopier første tuppel og eliminer duplikater i front av sublistene. Hashbasert algoritme: Partisjoner relasjonen. Duplikate tupler vil ha samme hashverdi. Les hver bucket inn i minnet og utfør en-pass-algoritmen som fjerner duplikater. INF3100 21.3.2014 Ellen Munthe-Kaas 17

Oppsummering: Kostnad og minnekrav for duplikateliminasjon δ(r) Algoritme Minnekrav Disk-IO En-Pass M 1 + B δ(r) B R To-Pass Sortering M B R 3B R To-Pass Hashing M B R 3B R INF3100 21.3.2014 Ellen Munthe-Kaas 18

Oppsummering: Kostnad og minnekrav for gruppering γ(r) Algoritme Minnekrav Disk-IO En-Pass M 1 + B γ(r) B R To-Pass Sortering M B R 3B R To-Pass Hashing M B R 3B R INF3100 21.3.2014 Ellen Munthe-Kaas 19

Binære full-relasjonsoperasjoner En binær operasjon tar to relasjoner som argumenter: union: R S snitt: R S differanse: R S join R S produkt: R S Merk at det er forskjell på set- og bagversjonene av disse operatorene. Vi skal se på algoritmer for set- og bagunion samt naturlig join; de resterende operatorene kan implementeres på tilsvarende måte Alle operasjoner som krever sammenligning, må bruke en søkestruktur (f.eks. binærtrær eller hashing) som også krever ressurser. Vi tar imidlertid ikke med disse i våre estimater. INF3100 21.3.2014 Ellen Munthe-Kaas 20

Union ( ) : En-pass Bag-union kan beregnes med en veldig enkel en-pass algoritme: Les og kopier hvert tuppel i R til outputbufferet. Les og kopier hvert tuppel i S til outputbufferet. Total kostnad B R + B S disk-io Minnekrav 1 (les hver blokk direkte til outputbuffer) Set-union må fjerne duplikater Les den minste relasjonen (anta S) inn i M-1 buffere og kopier hvert tuppel til output, men behold S i minnet. Les blokkene i R inn i det siste bufferet, og sjekk for hvert tuppel om det eksisterer i S; hvis ikke, kopier til output Minnekrav er B S < M INF3100 21.3.2014 Ellen Munthe-Kaas 21

Union ( ) : To-pass, sortering Set-union to-pass sortering: Gjør fase 1 av TPMMS for både R og S (lag sorterte sublister). Bruk ett buffer for hver av sublistene til R og S. Gjenta: Finn minste gjenværende tuppel i hver subliste Output tuppelet. Fjern duplikater fra fronten av alle listene Total kostnad er 3B R + 3B S disk-io Minnekrav M buffere gir rom for å lage sublister av lengde M blokker (B R + B S )/M M gir (B R + B S ) M Hvis B R + B S > M 2 får vi mer enn M sublister, og algoritmen vil ikke fungere. INF3100 21.3.2014 Ellen Munthe-Kaas 22

Union ( ) : To-pass, hashing Set-union to-pass hashalgoritme: Partisjoner både R og S i M-1 buckets med samme hashfunksjon. Gjør union på hvert bucketpar R i S i separat (en-pass setunion) Total kostnad: 3B R + 3B S disk-io 2 for partisjoneringen 1 for union av bucketpar Minnekrav: M buffere gir rom for å lage M-1 buckets for hver relasjon For hvert bucketpar R i og S i : enten B Ri M-1 eller B Si M-1 Tilnærmet min(b R, B S ) M 2 dvs min(b R, B S ) M Hvis den minste av R i og S i ikke får plass i M-1 buffere for en i, vil algoritmen ikke fungere. INF3100 21.3.2014 Ellen Munthe-Kaas 23

Oppsummering: Kostnad og minnekrav for R S Hvis B S B R : BAG-versjon : SET-versjon : Algoritme Minnekrav Disk-IO En-Pass M 1 B R + B S Algoritme Minnekrav Disk-IO En-Pass M 1 + B S B R + B S To-Pass Sortering M B R + B S 3B R + 3B S To-Pass Hashing M B S 3B R + 3B S INF3100 21.3.2014 Ellen Munthe-Kaas 24

Oppsummering: Kostnad og minnekrav for R S Hvis B S B R : Algoritme Minnekrav 1 Disk-IO En-Pass M 1 + B S B R + B S To-Pass Sortering M B R + B S 3B R + 3B S To-Pass Hashing M B S 3B R + 3B S 1 BAG-versjonen trenger i tillegg plass til tuppeltellere. INF3100 21.3.2014 Ellen Munthe-Kaas 25

Oppsummering: Kostnad og minnekrav for R S Hvis B S B R : Algoritme Minnekrav 1 Disk-IO En-Pass M 1 + B S B R + B S To-Pass Sortering M B R + B S 3B R + 3B S To-Pass Hashing M B S 3B R + 3B S 1 BAG-versjonen trenger i tillegg plass til tuppeltellere. INF3100 21.3.2014 Ellen Munthe-Kaas 26

Naturlig join ( ) : en-pass Naturlig join ( ) konkatenerer tupler fra R(X,Y) og S(Y,Z) som er slik at R.Y = S.Y En-pass-algoritme: Les den minste relasjonen (anta S) inn i M-1 buffere. Les relasjon R blokk for blokk. For hvert tuppel t Join t med matchende tupler i S Flytt resultatet til output Total kostnad B R + B S disk-io Minnekrav B S < M INF3100 21.3.2014 Ellen Munthe-Kaas 27

Naturlig join ( ) : Nestet loop join tuppel-basert algoritme Nestet loop join kan brukes for relasjoner av vilkårlig størrelse Tuppel-basert algoritme: FOR hvert tuppel s i relasjon S FOR hvert tuppel r i R IF r og s matcher, join til output Worst-case kostnad T R T S disk-io Minnekrav 2 (en R-blokk og en S-blokk) INF3100 21.3.2014 Ellen Munthe-Kaas 28

Naturlig join ( ) : Nestet loop join blokk-basert algoritme Hold så mye som mulig av den minste relasjonen i M-1 blokker Algoritme: (anta S minst) FOR hver partisjon p av S med størrelse M-1 { les p inn i minnet FOR hver blokk b for R { les b inn i minnet FOR hvert tuppel t i b { finn tupler i p som matcher t join hver av disse med t til output }}} Total kostnad B S + B R B S /(M-1) disk-io (Les S en gang, les R en gang for hver S-partisjon) Minnekrav 2 (en R-blokk og en S-blokk; størrelsen på S-partisjonene tilpasses M, så i verste fall er hver S-partisjon én blokk) INF3100 21.3.2014 Ellen Munthe-Kaas 29

Naturlig join ( ) : To-pass sortering enkel algoritme Sorter R og S hver for seg ved hjelp av TPMMS på joinattributtene. Join de sorterte R og S ved å Hvis et buffer for R eller S er tomt, hente ny blokk fra disk Finne tupler som har den minste v-verdien for join-attributtene (NB: Kan også finnes i påfølgende blokker; da må i såfall alle holdes i minnet!) Hvis det finnes v-verditupler i både R og S, joine disse og skrive til output Ellers, dropp alle v-verditupler. Total kostnad: 5B R + 5B S disk-io 4 for TPMMS 1 for å joine de sorterte R og S Minnekrav: TPMMS krever B M 2 for hver av relasjonene, dvs. B R M 2 og B S M 2 Hvis det finnes en v-verdi der tilhørende tupler ikke får plass i M blokker, virker ikke algoritmen. INF3100 21.3.2014 Ellen Munthe-Kaas 30

Naturlig join ( ) : To-pass hashing Algoritme: Partisjoner både R og S i M-1 buckets med samme hashfunksjon på joinattributtene Y. (Trenger 1 blokk til å holde fortløpende blokker av R og S.) Gjør naturlig join på hvert bucketpar separat R i S i en-pass join. Total kostnad: 3B R + 3B S disk-io 2 for å partisjonere relasjonene 1 for å gjøre join Minnekrav: M buffere kan lage M-1 buckets for hver relasjon For hvert par R i og S i må enten B Ri M-1 eller B Si M-1 Omtrent min(b R, B S ) M 2 dvs min(b R, B S ) M Hvis den minste av R i og S i ikke får plass i M-1 buffere, virker ikke algoritmen INF3100 21.3.2014 Ellen Munthe-Kaas 31

Naturlig Join ( ): Indeksbasert Algoritme R(X,Y) S(Y,Z) : Anta at det finnes en indeks for S på attributtene Y. Les hver blokk for R. For hvert tuppel finn tupler i S med samme joinattributter ved hjelp av indeksen les de tilsvarende blokkene, gjør join på de aktuelle tuplene og output resultatet Total kostnad: Hvis R er tettpakket, trenger vi B R disk-io, ellers opptil T R for å lese alle R-tupler. I tillegg må vi for hvert tuppel i R lese de tilsvarende S-tuplene: Med clusterindeks på Y (så S er sortert på Y): B S / V S (Y) S-tupler for hvert R-tuppel, totalt T R B S / V S (Y) Hvis S ikke er sortert på Y: T S / V S (Y), totalt T R T S / V S (Y) Kostnaden domineres fullstendig av S, vi ignorerer derfor konstnaden ved å lese R Minnekrav 2 (en R-blokk og en S-blokk) INF3100 21.3.2014 Ellen Munthe-Kaas 32

Oppsummering: Kostnad og minnekrav for R S Hvis B S B R : Algoritme Minnekrav Disk-IO En-pass B S M 1 B R + B S Tuppelbasert nestet loop 2 M worst case T R T S Blokkbasert nestet loop 2 M B S + B R B S /(M-1) Enkel to-pass sortering B R M 5 B R + 5 B S Sort-join B R + B S M 3 B R + 3 B S Hash-join B S M 3 B R + 3 B S Hybrid hash-join B S M (3 2M/B S )(B R + B S ) Indeks-join, clusterindeks 2 M T R B S / V S (Y) Indeks-join, S ikke sortert på Y 2 M T R T S / V S (Y) Zig-zag indeks-join B(T R /V R,a )+B(T S /V S,a ) M B R + B S INF3100 21.3.2014 Ellen Munthe-Kaas 33

Naturlig join: eksempel Eksempel: T R = 10.000, T S = 5.000 V R (a) = 100, V S (a) = 10 Både R og S er tettpakkede 4 KB blokker (ingen blokkhoder) Både R og S poster er på 512 B (inkludert blokkhoder) Har clusterindeks på attributt a for både R og S B S = 5.000 / 8 = 625 B R = 10.000 / 8 = 1250 INF3100 21.3.2014 Ellen Munthe-Kaas 34

Naturlig join: eksempel (forts.) T R = 10.000, T S = 5.000, B R = 1250, B S = 625, M = 101 Algoritme Minimum minne Disk-IO En-pass 626 1875 Tuppelbasert nestet loop 2 781875 Blokkbasert nestet loop 2 9375 Enkel to-pass sortering 36 9375 Sort-join 44 5625 Hash-join 25 5625 Hybrid hash-join 25 5019 Indeks-join 2 626250 (S-indeks) 63125 (R-indeks) Zig-zag indeks-join 76 1875 INF3100 21.3.2014 Ellen Munthe-Kaas 35

Valg av algoritme En-passalgoritmer er bra hvis ett av argumentene (relasjonene) får plass i minnet. To-passalgoritmer må brukes hvis vi har store relasjoner. Hashbaserte algoritmer Krever mindre minne sammenlignet med sorteringstilnærminger er bare avhengig av den minste relasjonen brukes ofte. Antar omtrent lik bucketstørrelse (god hashfunksjon) i virkeligheten vil det være noe variasjon, må anta mindre bucketstørrelser. Sorteringsbaserte algoritmer Gir sortert resultat, som kan utnyttes av påfølgende operatorer. Indeksbaserte algoritmer Utmerket for seleksjon Utmerket for for join hvis begge argumentene har clusterindekser. INF3100 21.3.2014 Ellen Munthe-Kaas 36

N passalgoritmer For virkelig store relasjoner er ikke to pass tilstrekkelig. Eksempel: B R = 1.000.000 TPMMS krever at B R < M 2 M > 1000 Hvis ikke 1000 blokker er tilgjengelige, virker ikke TPMMS. Trenger flere pass gjennom datasettet. Sorteringsbaserte algoritmer: Hvis R får plass i minnet, sorter. Hvis ikke, partisjoner R i M grupper og sorter hver R i rekursivt. Flett sublistene. Total kostnad: (2k 1)B R, k er antall pass som er nødvendig Vi trenger B R buffere, dvs B R M k Tilsvarende kan gjøres for hashbaserte algoritmer. INF3100 21.3.2014 Ellen Munthe-Kaas 37