Kuigi serveri korrektne konfigureerimine ja regulaarne audit tagavad andmebaasikeskkonna stabiilse vundamendi, tuleneb hinnanguliselt 90% jõudlusprobleemidest ebaefektiivsetest päringutest. Hästi seadistatud server suudab küll koormust paremini taluda, kuid vigane päringudisain või puudulik indekseerimine kurnavad ressursse sõltumata riistvara võimekusest.
Peamised kitsaskohad päringute töös:
-
Indeksite ebakõla: Puuduvad indeksid sunnivad serverit lugema tervet tabelit (Table Scan), mis on ajamahukas. Samas tekitavad üleliigsed või dubleerivad indeksid asjatut lisatööd andmete kirjutamisel ja muutmisel.
-
Andmebaasi disainivead: Ebaefektiivsed seosed tabelite vahel ja valesti valitud andmetüübid sunnivad SQL Serverit tegema liigseid arvutusi ja andmete konverteerimist.
-
Mõtlemata massoperatsioonid: Suure hulga andmete ühekordne kustutamine või uuendamine võib põhjustada logifaili kiire kasvu ja tabelite lukustumise (Locking/Blocking), mis takistab teiste kasutajate tööd.
Query Store – dünaamiline ülevaade jõudlusest
Päringute optimeerimisel on asendamatu tööriist Query Store. See funktsionaalsus salvestab automaatselt päringute täitmisplaanid ja statistika. Query Store võimaldab kiiresti tuvastada:
-
Miks eile kiiresti töötanud päring on täna aeglane (Plan Regression).
-
Millised päringud tarbivad kõige rohkem CPU-d, mälu või teevad enim lugemisi.
-
Kuidas on päringu jõudlus ajas muutunud.
Erinevalt serveri konfiguratsioonist, mis püsib pärast õiget seadistamist enamasti muutumatuna, on päringute maailm dünaamiline. Konfiguratsiooni on vaja üle vaadata vaid siis, kui lisandub uusi andmebaase või muutub riistvaraline ressurss. Päringute korrasolek on aga otseselt seotud rakenduse elutsükliga.
Järjepideva optimeerimise vajadus
Süsteemides, kus toimub pidev arendustegevus ja lisandub uusi funktsionaalsusi, on päringute monitoorimine ja optimeerimine igapäevane vajadus. Iga uus koodimuudatus võib muuta andmete kasutusmustrit. Stabiilse ja "valmis" süsteemi puhul on kontrollivajadus väiksem, kuid ka seal võivad andmemahtude kasvades varem efektiivsed olnud lahendused muutuda pudelikaelaks.
Päringute optimeerimise eesmärk on tagada, et tarkvaraarendus ja andmebaasi suutlikkus käiksid käsikäes, vältides olukorda, kus riistvaraline võimekus raisatakse ebaefektiivse koodi peale.