2. Füüsiline disain
2. Füüsiline disain
2. Füüsiline disain
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
TTÜ: Andmebaasi füüsiline <strong>disain</strong> (2012)<br />
© Erki Eessaar<br />
9. Indeks ei ole midagi sellist, mida saab luua ja siis unustada.<br />
Andmebaasi administraator peab regulaarselt indeksit jälgima ja<br />
hooldama. Kui indeks hakkab töökiirust kahjustama, siis tuleb see<br />
eemaldada.<br />
10.Väldi B-puu indekseid veergudel, kus on palju ühesuguseid väärtuseid.<br />
11.Indeksid, mille alusel saab vastata päringule ilma tabeli plokke<br />
lugemata (ingl. k. covering index), on kasulikud, kuid praktikas<br />
kasutatakse neid liiga palju. See võib halvendada päringute töökiirust.<br />
1<strong>2.</strong>Bitmap indeksid on kasulikud suurte andmehulkadega (terabaidid,<br />
petabaidid) andmebaasides, eriti andmeaitades.<br />
<strong>2.</strong><strong>2.</strong>3.20 Indeksi kasutamine andmebaasisüsteemi poolt<br />
Andmebaasisüsteemi üks moodul on optimeerija, mille ülesandeks on valida<br />
välja kiireim viis andmekäitluskeele lause täitmiseks. Optimeerimise moodul<br />
peab ka valima, kas ja milliseid indekseid lause täitmiseks kasutatakse.<br />
Optimeerimise moodul koostab päringu täitmisplaani (ingl. k. Query Execution<br />
Plan). Andmebaasisüsteemi üheks võimalikuks funktsionaalsuseks on<br />
analüüsimine, miks mingi päring töötab aeglaselt ja kuidas seda võib<br />
kiirendada.<br />
Näide: Andmebaasisüsteemis PostgreSQL on võimalik kasutada SQL käsku<br />
EXPLAIN, mis näitab päringu füüsilist täitmisplaani (vt. teema 11). EXPLAIN<br />
käsku saab kasutada erinevate päringute täitmisaja hindamiseks. Süntaks:<br />
EXPLAIN [ VERBOSE ] query<br />
See käsk näitab PostgreSQLi poolt genereeritavat lause täitmisplaani.<br />
Täitmisplaan kirjeldab sisemise taseme operatsioonid ning nende täitmise<br />
järjekorra, mida andmebaasisüsteem peab läbi viima välisel või<br />
kontseptuaalsel tasemel esitatud lause täitmiseks. Näiteks juhul, kui<br />
ühendatakse kokku mitu tabelit, näidatakse millise algoritmi alusel ridu<br />
ühendatakse (võimalike algoritmide näited on nested loop join, hash join,<br />
merge join).<br />
Näide:<br />
EXPLAIN SELECT * FROM Emp NATURAL JOIN Dept;<br />
QUERY PLAN<br />
--------------------------------------------------------------------<br />
Hash Join (cost=18.00..4<strong>2.</strong>25 rows=570 width=198)<br />
Hash Cond: ("outer".deptno = "inner".deptno)<br />
-> Seq Scan on emp (cost=0.00..15.70 rows=570 width=108)<br />
-> Hash (cost=16.40..16.40 rows=640 width=92)<br />
-> Seq Scan on dept (cost=0.00..16.40 rows=640 width=92)<br />
(5 rows)<br />
Andmebaasisüsteem koostab mitu võimalikku täitmisplaani ja arvutab<br />
andmebaasi statistikat kasutades välja iga plaani maksumuse – hinnangu<br />
42