110 likes | 270 Views
Indeksi. Zakaj? Dostikrat (največkrat) uporabniki iščejo podatke tako, da: podajo vrednost enega ali več podatkovnih elementov – primer: SELECT * FROM Dijak WHERE Razred=‘G1A’ // Poišči vse dijake razreda G1A podajo interval vrednosti nekega podatkovnega elementa – primer:
E N D
Indeksi Zakaj? Dostikrat (največkrat) uporabniki iščejo podatke tako, da: podajo vrednost enega ali več podatkovnih elementov – primer: SELECT * FROM Dijak WHERE Razred=‘G1A’ // Poišči vse dijake razreda G1A podajo interval vrednosti nekega podatkovnega elementa – primer: SELECT * FROM Matura WHERE Tocke BETWEEN 30 AND 33 // Poišči podatke o maturi za kandidate, ki so dosegli med 30 in 33 točk Indeksi so podatkovne strukture, ki omogočajo učinkovito izvedbo tovrstnih poizvedb.
Indeks • datoteka, katere vsebina omogoča hiter dostop do zapisov v osnovni fizični datoteki, ki je z indeksom indeksirana Uporaba indeksa: • za hiter dostopdo podatkov osnovne datoteke • dostop s pomočjo indeksa je hitrejši, kot ga sicer omogoča organizacija osnovne datoteke Redundantnost indeksa indeks je možno vedno znova kreirati (na osnovi podatkov v osnovni datoteki)
Zapis indeksne datoteke=podatki, ki tvorijo ključ + kazalec osnovna datoteka je indeksirana po P1, P2, .... Pn tip Indeksni_zapis =(P1:tip_P1, P2:tip_P2, ...., Pn:tip_Pn, Kazalec:Kazalčni) Ključ = (P1, P2, ... Pn) = ključ indeksa, tipi – enaki kot so tipi pod. elementov, ki nastopajo v zapisih osnovne datoteke • kazalec kaže na polja ali skupine polj z zapisi v osnovni datoteki
Vrste indeksovPrimarni - Sekundarni indeksi Primarni indeks • indeksiranje osnovne datoteke je izvedeno po njenem ključu (ključ indeksa in ključ osnovne datoteke sta enaka) • lastnosti: razločevalnost (unique), določa privzeto urejenost zapisov osnovne datoteke, največkrat tudi zahtevan vnos (required) • uporaba: za povezovanje tabel (kreiranje relacij) • Vsaka tabela ima največ en primarni indeks Sekundarni indeksi • indeksiranje osnovne datoteke je izvedeno po podatkovnem elementu (skupini podatkovnih elementov), ki nastopa v tipu zapisa osnovne datoteke, vendar ni ključ • Tabele imajo lahko tudi več sekundarnih indeksov
Vrste indeksov (nad.)Gosti – Redki indeksi Gosti indeksi • Za vsak zapis osnovne datoteke obstaja zapis v indeksni datoteki • vrednosti podatkovnih elementov, ki tvorijo ključ indeksnega zapisa se ujemajo z enako imenovanimi podatkovnimi elementi v zapisu osnovne datoteke • kazalec indeksnega zapisa kaže na polje, v katerem se nahaja pripadajoči osnovni zapis • ažuriranje: hkrati spremeni osnovno in indeksno datoteko Redki indeksi • pogoj za uporabo: osnovna datoteka je zaporedna + primarni indeks • v indeksu se nahaja po en zapis s kazalcem na vsako skupino polj z zapisi v osnovni datoteki • polja, ki tvorijo skupino, so polja, do katerih je možen hiter dostop npr. polja enega fizičnega bloka • indeks vsebuje tolikokrat manj zapisov kot osnovna datoteka, kolikor polj vsebuje skupina iskanje po indeksu je bistveno hitrejše kot iskanje po osnovni datoteki • redki primarni indeks sestavljajo indeksni zapisi, v katerih nastopata v paru kazalec na skupino polj in vrednost ključa zadnjega zapisa v skupini
Primerjava med gostim in redkim indeksom • Glede porabe prostora • manjši (boljši) redki indeks • Slaba stran redkega indeksa: posebna zahteva glede razvrstitve zapisov • za redke indekse tudi zapisi osnovne datoteke morajo biti enako urejeni (grozdeni / clustered) • Glede iskanja • Redki indeks je krajši in se lahko nahaja v celoti v pomnilniku • Gosti indeks lahko takoj pove ali zapis obstaja • Glede spreminjanja vrednosti zapisa – lažje pri redkih indeksih
Primer: cena (čas) iskanja zapisov, ki so v nekem intervalu vrednosti • Datoteka ima 10,000 blokov, iščemo interval, ki vsebuje 100 zapisov, predpostavka: 1 blok ima 20 zapisov • Število dostopov do diska za prenos stotih vrstic: • Uporaba neurejene datoteke (neumnost, vendar mogoče): 10,000 (pregledati je treba celotno datoteko) • Datoteka je zaporedna, zapisi so urejeni po iskalnem ključu (zelo ugodno, vendar malo verjetno): log2 10000 + (5 ali 6) 19 • Uporabimo gosti indeks: 100 • Uporabimo redki indeks: 5 ali 6 • Število dostopov do diska za branje indeksa(predpostavka: blok ima 2000 indeksnih zapisov) • Neurejena in zaporedna datoteka: 0 • Uporaba gostega indeksa: log210 4 • Uporaba redkega indeksa: 1 (preberemo le prvega)
Kaj pa če je kljub vsemu indeksna datoteka prevelika? • Naredi večnivojski indeks (to je tisto, kar sodobni SUPB-ju tudi uporabljajo) • Nekoč pogosta uporaba ISAM indeksov, vendar zaradi statike so se izkazali za slabše • Danes najbolj uporabljani B+ indeksi 1. Nivo – redki indeks 2. Nivo – gosti indeks
Značilnost: listi drevesa medsebojno niso povezani ISAM (le kot zanimivost) //po domače ‘iskalno drevo’ • Slaba stran – ob pogostem dodajanju ‘sorodnih’ zapisov se lahko pojavijo zelo dolge prelivne verige, iskanje po prelivnih verigah pa je zaporedno
Uporaba B+ dreves za shranjevanje indeksne strukture // po domače ‘uravnovešeno iskalno drevo’ Značilnost: listi drevesa so tudi medsebojno povezani