Postgres EXPLAIN ANALYZE komanda

Postgres Explain Analyze Komanda



Kalbant apie duomenų bazes, našumas yra viena iš funkcijų, kuriai teikiamas didelis prioritetas. Tai užtikrina, kad programos gali pateikti užklausas ir rašyti duomenis maksimaliai greitai ir efektyviai.

Kaip duomenų bazių administratoriai, turime būti apsėsti duomenų bazės našumo didinimo įrankių ir metodų.

„PostgreSQL“ turime prieigą prie komandos EXPLAIN ANALYZE, kuri leidžia analizuoti tam tikros duomenų bazės užklausos vykdymo planą ir našumą. Komanda pateikia išsamią informaciją apie tai, kaip duomenų bazės variklis apdoroja užklausą. Tai apima atliktų operacijų seką, numatomas užklausos išlaidas, vykdymo laiką ir kt.







Tada galime naudoti šią informaciją duomenų bazės užklausoms nustatyti, taip pat nustatyti ir pašalinti galimas našumo kliūtis.



Šioje pamokoje aptariama, kaip naudoti komandą EXPLAIN ANALYZE programoje PostgreSQL, kad būtų galima peržiūrėti ir optimizuoti užklausos našumą.



PostgreSQL EXPLAIN ANALIZĖ

Komanda yra gana paprasta. Pirmiausia užklausos, kurią norime analizuoti, pradžioje turime pridėti komandą EXPLAIN ANALYZE.





Komandos sintaksė yra tokia:

PAAIŠKINTI ANALIZUOTI

Kai įvykdysite komandą, PostgreSQL grąžina išsamią pateiktos užklausos išvestį.



EXPLAIN ANALYZE užklausos išvesties supratimas

Kaip minėta, kai paleidžiame komandą EXPLAIN ANALYZE, PostgreSQL sukuria išsamią užklausos plano ir vykdymo statistikos ataskaitą.

Išvestį sudaro stulpelių rinkinys, kuriame yra naudingos informacijos. Gauti stulpeliai yra tokie, kaip parodyta su atitinkama jų reikšmė:

UŽKLAUSOS PLANAS – Šiame stulpelyje rodomas nurodytos užklausos vykdymo planas. Vykdymo planas nurodo operacijų seką, kurią duomenų bazės variklis atlieka, kad sėkmingai užbaigtų užklausą.

PLANUOTI – Antrasis stulpelis yra stulpelis PLANAS. Jame yra tekstinis kiekvienos operacijos ar veiksmo vykdymo plano vaizdas. Vėlgi, kiekviena operacija yra įtraukta, kad būtų nurodyta operacijų hierarchija.

IŠ VISO IŠLAIDŲ – Bendrų išlaidų stulpelyje nurodoma apskaičiuota bendra užklausos kaina. Kaina reiškia santykinį matą, kurį duomenų bazės užklausų planavimo priemonė naudoja optimaliam vykdymo planui nustatyti.

TIKROS EILUTĖS – Šiame stulpelyje rodomas tikslus eilučių, kurios apdorojamos kiekviename užklausos vykdymo etape, skaičius.

TIKRAS LAIKAS – Šiame stulpelyje rodomas faktinis kiekvienos operacijos laikas, į kurį įeina ir operacijos vykdymo laikas, ir ištekliams sugaištas laikas.

PLANAVIMO LAIKAS – Šiame stulpelyje rodomas laikas, per kurį užklausų planavimo priemonė sugeneruoja vykdymo planą. Tai apima visą užklausos optimizavimo ir plano generavimo laiką.

VYKDYMO LAIKAS – Šiame stulpelyje rodomas bendras užklausos vykdymo laikas. Tai taip pat apima laiką, praleistą planuojant ir užklausos vykdymo laiką.

PostgreSQL EXPLAIN ANALYZE Pavyzdys

Pažvelkime į keletą pagrindinių teiginio EXPLAIN ANALYZE naudojimo pavyzdžių.

1 pavyzdys: pasirinkite pareiškimą
Naudokime teiginį EXPLAIN ANALYZE, kad parodytume paprasto Select sakinio vykdymą PostgreSQL.

EXPLAIN ANALYZE pasirinkite * iš wp_users, kur id > 3;

Paleidę ankstesnį teiginį, turėtume gauti tokią išvestį:

UŽKLAUSOS PLANAS
-------------------------------------------------- ------------------
Seq nuskaitymas naudojant wp_users (kaina = 0,00...10,38 eilučių = 10 plotis = 2256) (faktinis laikas = 0,009...0,010 eilučių = 7 kilpos = 1)
Filtras: (id > 3)
Filtro pašalintos eilutės: 3
Planavimo laikas: 0,995 ms
Vykdymo laikas: 0,021 ms
(5 eilutės)

Šiuo atveju matome, kad užklausos plano skyrius nurodo, kad užklausa atlieka nuoseklų wp_users lentelės nuskaitymą. Filtro linija žymi sąlygą, kuri naudojama gautoms eilutėms filtruoti.

Tada matome „Eilutės, kurias pašalino filtras“, kurioje rodomas eilučių, kurios pašalintos dėl filtro sąlygos, skaičius.

Galiausiai vykdymo laikas rodo bendrą užklausos vykdymo laiką. Šiuo atveju užklausa trunka 0,021 ms.

2 pavyzdys: prisijungimo analizė
Paimkime sudėtingesnę užklausą, kuri apima SQL prisijungimą. Tam naudojame Pagila pavyzdinę duomenų bazę. Galite atsisiųsti ir įdiegti pavyzdinę duomenų bazę savo kompiuteryje demonstravimo tikslais.

Galime atlikti paprastą sujungimą, kaip parodyta toliau:

paaiškinti analizuoti SELECT f.title, c.name
IŠ filmo f
PRISIJUNK prie filmo_kategorijos fc ON f.film_id = fc.film_id
PRISIJUNGTI prie kategorijos c ĮJUNGTA fc.kategorijos_id = c.kategorijos_id;

Paleidę nurodytą užklausą, išvestį turėtume matyti taip:

Išnagrinėkime šį užklausos planą:

  1. Įdėtas ciklas – tai rodo, kad sujungimui naudojama įdėtojo ciklo sujungimo strategija.
  2. Maišos sujungimas – ši operacija sujungia filmo_kategoriją ir filmų lenteles naudojant maišos sujungimo algoritmą. Šios operacijos kaina yra 77,50 ir numatoma 1000 eilučių. Tačiau tikrasis šios operacijos laikas yra nuo 0,254 iki 0,439 milisekundės ir ji nuskaito 1000 eilučių.
  3. Maišos sąlyga – tai rodo, kad sujungimo sąlyga naudoja maišos sujungimą, kad atitiktų filmo lentelių stulpelius film_id ir film_category.
  4. Seq Scan on film_category – ši operacija nuosekliai nuskaito lentelę film_category, kurios kaina yra 16,00 ir numatoma 1000 eilučių. Tikrasis šios operacijos laikas yra nuo 0,008 iki 0,056 milisekundžių ir ji nuskaito 1000 eilučių.
  5. Seq Scan on film – užklausa atlieka nuoseklų filmų lentelės nuskaitymą su apskaičiuotomis ir faktinėmis sąnaudomis ir šios operacijos eilutėmis.
  6. Atminti – ši operacija talpykloje išsaugo filmo_kategorijos ir filmų lentelių sujungimo rezultatus, kad būtų galima naudoti vėliau.
  7. Talpyklos raktas – tai rodo, kad talpyklos raktas, naudojamas įrašymui į atmintį, yra pagrįstas stulpeliu category_id iš film_category.
  8. Talpyklos režimas – tai rodo, kad užklausoje naudojamas loginės talpyklos režimas.
  9. Patikimai, praleisti, iškeldinti, perpildyti – trys eilutės pateikia statistiką apie talpyklą, įvykių skaičių, praleidimus, iškeldinimus ir perpildymus vykdymo metu. Šis blokas taip pat apima atminties naudojimą vykdant užklausą.
  10. Indekso nuskaitymas naudojant category_pkey – rodoma operacija, kuri atlieka indekso nuskaitymą kategorijų lentelėje naudojant pirminio rakto indeksą.
  11. Indekso sąlyga – rodo, kad indekso nuskaitymas pagrįstas sąlyga, atitinkančia kategorijos_id stulpelį kategorijų lentelėje.
  12. Planavimo laikas – šioje eilutėje rodomas užklausos planavimo laikas, kuris yra 3,005 milisekundės.
  13. Vykdymo laikas – galiausiai šioje eilutėje rodomas bendras užklausos vykdymo laikas, kuris yra 0,745 milisekundės.

Štai jūs tai turite! Išsami informacija apie paprasto sujungimo vykdymą PostgreSQL.

Išvada

Jūs atradote EXPLAIN ANALYZE sakinio galią ir naudojimą sistemoje PostgreSQL. Teiginys EXPLAIN ANALYZE yra galingas užklausų analizės ir optimizavimo įrankis. Naudokite šį įrankį, kad sukurtumėte efektyvias ir mažiau išteklių reikalaujančias užklausas.