Ladda ner presentationen
Presentation laddar. Vänta.
1
DAV B04 - Databasteknik Indexering (kap 14)
2
Lagring av databaser på sekundärminne
Att läsa/skriva på sekundärminne (hårddisk) är en långsam process jämfört med operationer i primärminnet Antalet diskaccesser (I/O) bör därför minimeras
3
Skrivning och läsning från sekundärminne
Skrivning och läsning sker i form av sidor (= page/block) med standardstorlek, t ex 1024 bytes Databasposterna är ofta mindre än sidorna, t ex 100 bytes, vilket gör att man läser/skriver flera poster (i detta fall 10) på samma gång Önskvärt är att relaterade poster lagras nära varandra för att minska antalet accesser
4
Hämta en post från databasen
DBHS bestämmer vilken lagrad post som behöver hämtas och ber filhanteraren att hämta posten Filhanteraren bestämmer vilken sida (block) som posten finns på och ber diskhanteraren att hämta den sidan Diskhanteraren bestämmer fysisk adress och ber om data från denna adress Data läses av diskhanteraren Den lagrade sidan returneras till filhanteraren Den lagrade posten returneras till DBHS
5
Indexering Ett index är en hjälpfil som gör det mer effektivt att söka efter en post i en datafil Indexet specificeras oftast på ett fält i datafilen Indexet kan t ex vara en fil av typen <fältvärde, pekare till datapost> Indexet är alltid sorterat
6
Exempel indexering Filen City (index) Filen Suppliers (data) Athens S Smith London London S Jones Paris London S Blake Paris Paris S Clark London Paris S Adams Athens Filen City kallas för ett index till filen Suppliers, och filen Supplier sägs vara indexerad av filen City. Fältet City i filen Suppliers kallas det indexerade fältet
7
Indexering (forts) Indexfilen är oftast betydligt mindre än datafilen (består av färre diskblock) En binärsökning av indexfilen ger en pekare till den sökta posten Fördel: snabbare hämtning av data Nackdelar: långsammare uppdateringar, mer diskutrymme krävs
8
Typer av index Primary indexes (primärindex)
Clustering indexes (klustrade index) Secondary indexes (sekundära index) Multilevel indexes (flernivå-index) Dynamic multilevel indexes, B-trees, B+-trees Ett index kan vara: dense (= index till varje post) nondense (= ej index till varje post).
9
Primary indexes Index knutet till primärnyckel
Indexet består av ett primärnyckelvärde och en pekare till ett block Indexet får lika många rader som antalet diskblock datafilen består av Indexet är nondense
10
Clustering indexes Index knutet till ett icke-nyckelfält som har dubbletter En pekare från indexfilen för varje distinkt värde på clustering-fältet Det är vanligt att man reserverar ett helt block (eller flera) för varje värde på clustering-fältet Också nondense
11
Secondary indexes Indexfil med två värden, indexfält och pekare till post/block En datafil kan ha många sekundärindex, ett för varje attribut Kan vara dense eller nondense Tar mer plats och ger längre söktider än ett primärindex, men vinsten är större
12
Multilevel indexes Index med flera nivåer
Vi behöver en andra nivå bara om den första nivån kräver mer en ett block för disklagring Vi behöver en tredje nivå bara om den andra nivån kräver mer en ett block för disklagring
13
B+-träd B-träd är en form av sökträd som möjliggör en effektiv insättning och borttagning av poster. Varje nod i trädet motsvarar ett diskblock Träden är alltid balanserade, dvs. alla löv ligger på samma nivå Gör att accesstiderna blir förutsägbara I ett B-träd kan datapekare finnas i alla inre noder och i löven medan B+-träd endast har datapekare i löven Dessutom finns pekare mellan löven i B+-träd vilket möjliggör sekventiell sökning
14
Ett B-träd av ordningen 3
15
Tumregler för indexering
Indexera alltid primärnyckeln Inga sekundära index i små relationer Indexera attribut som ofta används som söknyckel Indexera främmandenycklar som används ofta Undvik att indexera attribut och relationer som uppdateras ofta Undvik att indexera attribut som består av långa teckensträngar
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.