17.03.2015 Views

2. Füüsiline disain

2. Füüsiline disain

2. Füüsiline disain

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

TTÜ: Andmebaasi füüsiline <strong>disain</strong> (2012)<br />

© Erki Eessaar<br />

SELECT klient, AVG(summa) AS keskm<br />

FROM Arve<br />

GROUP BY klient<br />

Kui indekseerida nii veerud klient kui ka summa, siis saab tulemuse välja<br />

arvutada vaid indeksi põhjal, ilma andmefaili poole pöördumata.<br />

B-puu indeksi indeksiplokkides on indeksi kirjed võtmeväärtuse järgi<br />

sorteeritud. Andmebaasisüsteem saab seda ära kasutada, kui BETWEEN<br />

predikaati, ORDER BY või GROUP BY klauslit, UNION või DISTINCT<br />

operatsiooni (kasutavad sisemisel tasemel sorteerimist) sisaldava päringu<br />

täitmiseks kasutatakse indeksit.<br />

• Indekseid ja B-puud tuleb uuendada, kui lisatakse uus rida, kustutatakse<br />

rida või muudetakse indekseeritud veeru väärtust. Pragmaatiline käitumine<br />

– kui kohe pärast tabeli loomist on vaja sisestada suur hulk ridu (tabeli<br />

maht kasvab üle 5%) ja ei ole vaja sellest tabelist midagi otsida, siis luua<br />

kõigepealt tabel, siis sisestada read ja lõpuks luua indeksid.<br />

Peale selle võtavad indeksid kettaruumi – mida pikem on indekseeritav väli ja<br />

mida erinevamad on selle välja väärtused, seda rohkem ruumi võtab indeks.<br />

Seega tuleks pragmaatilistel põhjustel näiteks primaarvõtme veeru (veergude)<br />

puhul hoolikalt kaaluda väljapikkusi, sest primaarvõtmele luuakse enamasti<br />

indeks automaatselt.<br />

Indeksid võtavad ka ruumi muutmälus, sest indeksi kasutamisel loeb<br />

andmebaasisüsteem indeksiplokke muutmällu.<br />

Mida suurem on tabel, seda rohkem on indeksist kasu, kuid seda suuremad<br />

on ka indeksi ülalpidamise kulud – ajakulu uuendamisel ja indeksi all olev<br />

kettaruum. Lighstone et al. (2007) märgib, et tüüpiliselt kulub andmebaasis<br />

10% kuni 20% salvestusruumist indeksite andmete salvestamiseks. Kui see<br />

suurus on üle 25%, siis tuleks andmebaasis olevad indeksid põhjalikult<br />

ülevaadata ning üleliigsed indeksid eemaldada.<br />

Indekseerimise mõju andmete muutmisele ja kustutamisele on kahetine.<br />

Üheltpoolt saab indeksi abil muudetavad ja kustutavad read kiiremini üles<br />

leida. Teisalt tingivad muudatused indekseeritud veerule vastavates väljades<br />

või ridade lisamine/kustutamine ka indeksi ümberkorraldamise vajaduse, mis<br />

omakorda võtab aega.<br />

Seepärast on soovitav:<br />

• mõelda veergude indekseerimisele eelkõige tabelites, kus muutmised on<br />

küllalt harvad võrreldes päringutega,<br />

• mitte indekseerida tabelites veerge, milles olevaid andmeid tuleb sageli<br />

muuta.<br />

Suhteliselt kõige rohkem kasu on indeksitest selliste tabelite puhul, mis on<br />

suured, mida uuendatakse harva ja millest otsitakse sageli andmeid.<br />

29

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!