Postgres EXPLAIN ANALYZE käsk

Postgres Explain Analyze Kask



Andmebaaside puhul on jõudlus üks funktsioon, millel on kõrge prioriteet. See tagab, et rakendused saavad päringuid teha ja andmeid kirjutada maksimaalse kiiruse ja tõhususega.

Andmebaasi administraatoritena peame olema kinnisideeks andmebaasi jõudluse parandamise tööriistade ja meetodite osas.

PostgreSQL-is on meil juurdepääs käsule EXPLAIN ANALYZE, mis võimaldab analüüsida antud andmebaasipäringu täitmisplaani ja toimivust. Käsk tagastab üksikasjaliku teabe selle kohta, kuidas andmebaasimootor päringut töötleb. See hõlmab sooritatud toimingute jada, hinnangulisi päringukulusid, täitmise ajastust ja palju muud.







Seejärel saame seda teavet kasutada nii andmebaasipäringute tuvastamiseks kui ka võimalike toimivuse kitsaskohtade tuvastamiseks ja parandamiseks.



Selles õpetuses käsitletakse, kuidas kasutada PostgreSQL-is käsku EXPLAIN ANALYZE, et vaadata ja optimeerida päringu jõudlust.



PostgreSQL SELGITUS ANALÜÜSI

Käsk on üsna lihtne. Esiteks peame analüüsitava päringu algusesse lisama käsu EXPLAIN ANALYZE.





Käsu süntaks on järgmine:

SELGITA ANALÜÜSI

Kui olete käsu täitnud, tagastab PostgreSQL üksikasjaliku väljundi esitatud päringu kohta.



Päringu EXPLAIN ANALYZE väljundi mõistmine

Nagu mainitud, loob PostgreSQL pärast käsu EXPLAIN ANALYZE käivitamist päringuplaani ja täitmisstatistika üksikasjaliku aruande.

Väljund koosneb veergude komplektist, mis sisaldavad kasulikku teavet. Saadud veerud on nagu näidatud nende vastava tähendusega:

PÄRINGU PLAAN – See veerg kuvab määratud päringu täitmisplaani. Täitmisplaan viitab toimingute jadale, mida andmebaasimootor päringu edukaks lõpuleviimiseks sooritab.

PLAAN – Teine veerg on veerg PLAAN. See sisaldab täitmisplaani iga toimingu või etapi tekstilist esitust. Jällegi on iga operatsioon taandega, mis näitab toimingute hierarhiat.

KOGUMAKSUMUS – Kogukulu veerg tähistab päringu hinnangulist kogumaksumust. Kulud viitavad suhtelisele mõõdule, mida andmebaasi päringu planeerija kasutab optimaalse täitmisplaani määramiseks.

TEGELIKUD RIDAD – See veerg näitab täpset ridade arvu, mida päringu täitmise igas etapis töödeldakse.

TEGELIK AEG – See veerg näitab iga toimingu tegelikku aega, mis sisaldab nii toimingu täitmise aega kui ka ressurssidele kuluvat aega.

PLANEERIMISAEG – See veerg näitab aega, mis päringuplaneerijal kulub täitmisplaani loomiseks. See hõlmab päringu optimeerimise ja plaani genereerimise koguaega.

TÄITMISAEG – See veerg näitab päringu täitmiseks kulunud koguaega. See hõlmab ka planeerimisele ja päringu täitmisele kuluvat aega.

PostgreSQL EXPLAIN ANALÜÜS Näide

Vaatame mõningaid põhinäiteid lause EXPLAIN ANALYZE kasutamise kohta.

Näide 1: Valige väljavõte
Kasutame käsku EXPLAIN ANALYZE, et näidata lihtsa valikulause täitmist PostgreSQL-is.

EXPLAIN ANALÜÜS valige * wp_usersist, kus id > 3;

Kui oleme eelmise avalduse käivitanud, peaksime saama järgmise väljundi:

PÄRINGU PLAAN
-------------------------------------------------- -----------------
Seq Scan on wp_users  (kulu = 0,00...10,38 rida = 10 laius = 2256) (tegelik aeg = 0,009 ... 0,010 rida = 7 silmust = 1)
Filter: (id > 3)
Filtriga eemaldatud read: 3
Planeerimisaeg: 0,995 ms
Täitmisaeg: 0,021 ms
(5 rida)

Sel juhul näeme, et jaotis Päringuplaan näitab, et päring teostab tabelis wp_users järjestikust kontrolli. Filtrijoon tähistab tingimust, mida kasutatakse saadud ridade filtreerimiseks.

Seejärel näeme 'Filtriga eemaldatud read', mis näitab filtritingimustega eemaldatud ridade arvu.

Lõpuks näitab täitmisaeg päringu täitmise koguaega. Sel juhul võtab päring aega 0,021 ms.

Näide 2: Liitumise analüüsimine
Võtame keerukama päringu, mis hõlmab SQL-i liitumist. Selleks kasutame Pagila näidisandmebaasi. Näidisandmebaasi saate demonstreerimiseks alla laadida ja oma masinasse installida.

Saame käivitada lihtsa liitumise, nagu on näidatud järgmises:

seleta analüüsida SELECT f.titt, c.name
filmist f
LIITUMINE filmi_kategooria fc SEES f.filmi_id = fc.filmi_id
JOIN kategooria c ON fc.category_id = c.category_id;

Kui oleme antud päringu käivitanud, peaksime nägema väljundit järgmiselt:

Uurime järgmist päringuplaani:

  1. Pesastatud silmus – see näitab, et ühendus kasutab pesastatud tsükliga liitumisstrateegiat.
  2. Hash Join – see toiming ühendab filmi_kategooria ja filmitabelid, kasutades räsiühenduse algoritmi. Selle toimingu maksumus on 77,50 ja hinnanguliselt 1000 rida. Selle toimingu tegelik aeg on aga 0,254–0,439 millisekundit ja see otsib 1000 rida.
  3. Räsitingimus – see näitab, et liitumise tingimus kasutab räsiühendust, et sobitada filmitabelite veergud film_id ja film_category.
  4. Seq Scan on film_category – see toiming teostab tabelis film_category järjestikuse skannimise maksumusega 16.00 ja hinnanguliselt 1000 rida. Selle toimingu tegelik aeg on 0,008 kuni 0,056 millisekundit ja see otsib 1000 rida.
  5. Seq Scan on film – päring teostab filmitabeli järjestikuse skannimise, mille tulemuseks on selle toimingu hinnangulised ja tegelikud kulud ja read.
  6. Jäta meelde – see toiming salvestab vahemällu filmi_kategooria ja filmitabelite ühendamise tulemused hilisemaks kasutamiseks.
  7. Vahemälu võti – see näitab, et meeldejätmiseks kasutatav vahemäluvõti põhineb kategooria film_category veerul category_id.
  8. Vahemälurežiim – see näitab, et päring kasutab loogilist vahemälurežiimi.
  9. Tabamused, möödalaskmised, väljatõstmised, ületäitumised – kolm rida annavad statistikat vahemälu, tabamuste arvu, möödalaskmiste, väljatõstmiste ja täitmise ajal ületäitumiste kohta. See plokk hõlmab ka mälukasutust päringu täitmise ajal.
  10. Indeksi skannimine kategooria_pkey abil – see näitab toimingut, mis teostab kategooriatabeli indeksi kontrolli, kasutades primaarvõtmeindeksit.
  11. Indeksi tingimus – see näitab, et indeksi skannimine põhineb tingimusel, mis vastab kategooriatabeli veerule category_id.
  12. Planeerimisaeg – see rida näitab päringu planeerimiseks kuluvat aega, mis on 3,005 millisekundit.
  13. Täitmisaeg – lõpuks näitab see rida päringu täitmise koguaega, mis on 0,745 millisekundit.

Siin on see! Üksikasjalik teave lihtsa liitumise täitmise kohta PostgreSQL-is.

Järeldus

Avastasite PostgreSQL-is lause EXPLAIN ANALYZE võimsuse ja kasutamise. EXPLAIN ANALYZE avaldus on võimas tööriist päringu analüüsimiseks ja optimeerimiseks. Kasutage seda tööriista tõhusate ja vähem ressursimahukate päringute koostamiseks.