Ab admin praktikum 4
Allikas: Lambda
Eesmärk: tabelite, päringu ja indeksite loomine ning optimeerimine päringu kiiruse suurendamiseks.
Vaja on kirjutada vabas vormis aruanded
- joini opteerimise tegevusest ja tulemustest.
- erinevate indeksite (standardne b+tree, hash ja bitmap) kasutamisest ja tulemusest.
Aruanded tuleb praktikumijuhendajale ette näidata ja selgitada huvitavamaid saadud tulemusi.
Kõigepealt valmista baas ette:
- Installeeri apt-get abil pg (seda ei pea raporteerima)
- Loo kolm näitetabelit paari tulbaga, kusjuures osa tulpasid oleks paljude eri väärtustega (id, hind, nimi jne) ja osa oleks väikese arvu väärtustega (näiteks kaks erinevat) nagu liik, tüüp jne. Indekseid ära veel tee!
- Pane igaühte ca 100.000 rida. Selleks vaja teha programm. Arvesta eelmainituga: et osadel väljadel oleks palju eri väärtusi, osadel aga valik kahest variandist.
Seejärel tee katsed ja kirjuta aruanded:
- Joini optimeerimine.
- Ehita join, mis võtab ca 1 sek. Ära tee joini primary key peale, sest sellel on automaatselt juba indeks olemas!
- Seda joini asume eri viisidel optimeerima. Põhiline meetod: ehita indeks ühe või mõne joinitava välja jaoks, siis kõigi joinitavate väljade jaoks jne. Tee uuesti joine ja püüa saavutada maksimaalne joini kiirus. Ehk teisisõnu:
- Optimeerimised indeksiga: tee erinevaid indekseid ja raporteeri joini kiiruse muutusi.
- Optimeerimised joini kujuga: uuri, mis explain ütleb, katseta erinevaid joini kujusid, raporteeri tulemusi. Püüa leida kõige kiirem viis.
- Kirjuta vabas vormis raport: kui kaua võttis join ilma indeksita, osaliste indeksitega, täielikult indekseeritult. Kirjuta kindlasti ka lühiülevaade schemast ja milline join täpselt oli. Märgi üles muud huvitavad tähelepanekud.
- Katsed eri tüüpi indeksitega.
- Likvideeri indeksid.
- Ehita päring, mis teeks näiteks counti ridadest, kus esineb teatud keerukas kombinatsioon välja väärtustest (mitu or-i ja and-i). Püüa saavutada olukord, kus päring võtaks ca 1 sekund (see on orientiir, mitte kohustuslik saavutada).
- Loo kõigile or-itavatele ja and-tavatele väljadele indeksid ja katseta päringut nende indeksitega, eesmärgiga võrrelda eri indeksitüüpide kiirust. Katseta kolme liiki indeksitega:
- Standardne b+tree indeks
- Hash indeks
- Bitmap indeks
Vaata lisaks ka: Postgresql tuunimise materjalide kogu
Kindlasti loe erinevate indeksite kohta: