1 / 15

DAV B04 - Databasteknik

DAV B04 - Databasteknik. Indexering (kap 14). 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. Skrivning och läsning från sekundärminne.

jadyn
Télécharger la présentation

DAV B04 - Databasteknik

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 S1 Smith 20 London London S2 Jones 10 Paris London S3 Blake 30 Paris Paris S4 Clark 20 London Paris S5 Adams 30 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

More Related