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 />

Indeksi kasutamisel otsitakse kõigepealt rea aadress indeksipuust. Seejärel<br />

tuleb lugeda rida mingist tabeliplokist. Tabeliplokkides paiknevad read<br />

enamasti juhuslikus järjekorras. Indeksi abil andmete otsimisel võib<br />

andmebaasisüsteem lugeda ühte tabeli plokki mitu korda. Kui otsitakse<br />

piisavalt suurt hulka ridu, siis on tabeli läbiskaneerimine kiirem kui otsing<br />

indeksi põhjal.<br />

Kui tabel on nii väike, et mahub ühe tabeliplokki, siis kiirem on lugeda kohe<br />

see tabeliplokk, selle asemel et lugeda kõigepealt indeksit ja siis ikkagi see<br />

sama tabeliplokk.<br />

Mõelge, kas kasutaksite raamatu indeksit, kui Teie ülesandeks oleks kogu<br />

raamat läbi lugeda või kui raamat oleks ainult mõni lehekülg paks.<br />

<strong>2.</strong><strong>2.</strong>3.19 Indekseerimise rusikareeglid<br />

Lighstone et al. (2007) loetleb indekseerimise rusikareeglid (reeglid, mille<br />

rakendamine annab enamasti hea tulemuse).<br />

1. Indekseeri kõik primaarvõtmed (seda teeb enamik<br />

andmebaasisüsteeme automaatselt) ja enamik välisvõtmetest.<br />

<strong>2.</strong> Veerud, millele sageli viidatakse SQL lause WHERE klauslis, on<br />

potentsiaalselt head indekseerimise kandidaadid.<br />

3. B-puu indeksit saab andmebaasisüsteem kasutada nii päringute puhul,<br />

kus rea otsing toimub ühe kindla väärtuse järgi (näide: isik_id=34222)<br />

kui ka päringute puhul, kus ridu otsitakse mingi väärtuste vahemiku<br />

alusel (näide: isik_id BETWEEN 432432 AND 432499).<br />

4. Igal tabelil võiks olla üks klasterdatud indeks, mille alusel on tabeli read<br />

andmebaasi sisemisel tasemel sorteeritud.<br />

5. Väldi kattuvaid indekseid – indeksid, milles on üks või rohkem ühine<br />

veerg. Sellised indeksid tekitavad andmebaasisüsteemile segadust ja<br />

süsteem ei pruugi koostada tänu sellele lausele kõige paremat<br />

võimalikku täitmisplaani. Üks põhjus, miks andmebaasis võidakse luua<br />

kattuvaid indekseid on see, et uue indeksi loomisel ei arvestata<br />

andmebaasis automaatselt loodud indeksitega.<br />

6. Lindeks ei ole tasuta lõuna – lisa indeks vaid siis, kui seda on hädasti<br />

vaja.<br />

7. Töökiiruse huvides võib aja möödudes liitindeksisse veerge juurde<br />

lisada, sealt veerge eemaldada – vastavalt hetkel kõige olulisematest<br />

päringutest tulenevatele nõudmistele. Mida rohkem veergusid on<br />

hõlmatud liitindeksi I poolt, seda vähem on I-st kasu päringu korral, mis<br />

ei kasuta täpselt I poolt hõlmatavaid veerge.<br />

8. Ole veeru indekseerimisega väga ettevaatlik, kui selles veerus<br />

muudetakse sageli andmeid. Andmete muutmine tingib vajaduse<br />

muuta ka indeksit ja see on suhteliselt aeganõudev protsess.<br />

41

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

Saved successfully!

Ooh no, something went wrong!