Postgres EXPLAIN ANALYZE -komento

Postgres Explain Analyze Komento



Tietokantojen osalta suorituskyky on yksi tärkeä ominaisuus. Tämä varmistaa, että sovellukset voivat kysyä ja kirjoittaa tietoja mahdollisimman nopeasti ja tehokkaasti.

Tietokannan ylläpitäjinä meidän on oltava pakkomielle työkaluista ja menetelmistä tietokannan suorituskyvyn parantamiseksi.

PostgreSQL:ssä meillä on pääsy EXPLAIN ANALYZE -komentoon, jonka avulla voimme analysoida tietyn tietokantakyselyn suoritussuunnitelmaa ja suorituskykyä. Komento palauttaa yksityiskohtaiset tiedot siitä, kuinka tietokantakone käsittelee kyselyn. Tämä sisältää suoritettujen toimintojen sarjan, arvioidut kyselykustannukset, suorituksen ajoituksen ja paljon muuta.







Voimme sitten käyttää näitä tietoja tietokantakyselyjen tunnistamiseen sekä mahdollisten suorituskyvyn pullonkaulojen tunnistamiseen ja korjaamiseen.



Tässä opetusohjelmassa käsitellään EXPLAIN ANALYZE -komentoa PostgreSQL:ssä kyselyn suorituskyvyn tarkastelemiseen ja optimointiin.



PostgreSQL EXPLAIN ANALYZE

Käsky on melko suoraviivainen. Ensin meidän on lisättävä EXPLAIN ANALYZE -komento sen kyselyn alkuun, jonka haluamme analysoida.





Komennon syntaksi on seuraava:

SELITYS ANALYSOI

Kun suoritat komennon, PostgreSQL palauttaa yksityiskohtaisen tulosteen toimitetusta kyselystä.



EXPLAIN ANALYZE -kyselyn tulosteen ymmärtäminen

Kuten mainittiin, kun suoritamme EXPLAIN ANALYZE -komennon, PostgreSQL luo yksityiskohtaisen raportin kyselysuunnitelmasta ja suoritustilastoista.

Tulos koostuu joukosta sarakkeita, jotka sisältävät hyödyllistä tietoa. Tuloksena olevat sarakkeet ovat kuvan mukaiset ja niiden merkitykset:

KYSELYSUUNNITELMA – Tämä sarake näyttää määritetyn kyselyn suoritussuunnitelman. Suoritussuunnitelma viittaa toimintosarjaan, jonka tietokantakone suorittaa suorittaakseen kyselyn onnistuneesti loppuun.

SUUNNITELMA – Toinen sarake on PLAN-sarake. Tämä sisältää tekstiesityksen suoritussuunnitelman jokaisesta operaatiosta tai vaiheesta. Jälleen jokainen operaatio on sisennetty osoittamaan toimintojen hierarkiaa.

KOKONAISKUSTANNUKSET – Kokonaiskustannukset -sarake edustaa kyselyn arvioituja kokonaiskustannuksia. Hinta viittaa suhteelliseen mittaan, jota tietokantakyselyn suunnittelija käyttää optimaalisen suoritussuunnitelman määrittämiseen.

TODELLISET RIVIT – Tämä sarake näyttää tarkan määrän rivejä, jotka käsitellään kyselyn suorittamisen jokaisessa vaiheessa.

TODELLINEN AIKA – Tämä sarake näyttää kunkin toiminnon todellisen ajan, joka sisältää sekä toiminnon suoritusajan että resursseihin käytetyn ajan.

SUUNNITTELUAIKA – Tämä sarake näyttää ajan, jonka kyselysuunnittelija käyttää suoritussuunnitelman luomiseen. Tämä sisältää kyselyn optimoinnin ja suunnitelman luomisen kokonaisajan.

TOTEUTUSAIKA – Tämä sarake näyttää kyselyn suorittamiseen kuluvan kokonaisajan. Tähän sisältyy myös suunnitteluun ja kyselyjen suorittamiseen käytetty aika.

PostgreSQL EXPLAIN ANALYZE Esimerkki

Katsotaanpa joitain perusesimerkkejä EXPLAIN ANALYZE -käskyn käytöstä.

Esimerkki 1: Valitse Lausunto
Käytämme EXPLAIN ANALYZE -käskyä näyttämään yksinkertaisen select-käskyn suorittamista PostgreSQL:ssä.

EXPLAIN ANALYZE valitse * wp_users, jossa id > 3;

Kun suoritamme edellisen lauseen, meidän pitäisi saada tulos seuraavasti:

KYSELYSUUNNITELMA
--------------------------------------------------- ------------------
Seq Scan on wp_users  (hinta = 0,00..10,38 riviä = 10 leveys = 2256) (todellinen aika = 0,009...0,010 riviä = 7 silmukkaa = 1)
Suodatin: (tunnus > 3)
Suodattimen poistamat rivit: 3
Suunnitteluaika: 0,995 ms
Suoritusaika: 0,021 ms
(5 riviä)

Tässä tapauksessa voimme nähdä, että Kyselysuunnitelma-osio osoittaa, että kysely suorittaa peräkkäisen tarkistuksen wp_users-taulukossa. Suodatinviiva ilmaisee ehtoa, jota käytetään tuloksena olevien rivien suodattamiseen.

Näemme sitten 'Suodattimen poistamat rivit', joka näyttää suodatusehdon poistamien rivien määrän.

Lopuksi suoritusaika näyttää kyselyn kokonaissuoritusajan. Tässä tapauksessa kysely kestää 0,021 ms.

Esimerkki 2: Liitoksen analysointi
Otetaan monimutkaisempi kysely, joka sisältää SQL-liitoksen. Käytämme tähän Pagilan mallitietokantaa. Voit ladata ja asentaa mallitietokannan koneellesi esittelyä varten.

Voimme suorittaa yksinkertaisen liitoksen seuraavan kuvan mukaisesti:

selittää analysoida SELECT f.titt, c.name
FROM elokuvasta f
LIITY film_category fc ON f.film_id = fc.film_id
LIITY luokkaan c PÄÄLLÄ fc.luokan_id = c.luokan_id;

Kun suoritamme annetun kyselyn, meidän pitäisi nähdä tulos seuraavasti:

Tutustutaanpa seuraavaan kyselysuunnitelmaan:

  1. Sisäkkäinen silmukka – Tämä osoittaa, että liitos käyttää sisäkkäisen silmukan liitosstrategiaa.
  2. Hash Join – Tämä toiminto yhdistää film_category- ja filmitaulukot käyttämällä Hash-liitosalgoritmia. Tämän toimenpiteen hinta on 77,50 ja arviolta 1000 riviä. Todellinen aika tähän toimintoon on kuitenkin 0,254–0,439 millisekuntia, ja se hakee 1000 riviä.
  3. Hash Cond – Tämä osoittaa, että liitosehto käyttää Hash-liitosta sovittaakseen filmitaulukoiden film_id- ja film_category-sarakkeet.
  4. Seq Scan on film_category – Tämä toiminto suorittaa peräkkäisen skannauksen film_category-taulukossa, jonka hinta on 16,00 ja arviolta 1000 riviä. Todellinen aika tähän toimintoon on 0,008-0,056 millisekuntia, ja se hakee 1000 riviä.
  5. Seq Scan on film – Kysely suorittaa peräkkäisen skannauksen filmitaulukossa, jossa on tämän toiminnon arvioidut ja todelliset kustannukset ja rivit.
  6. Memoize – Tämä toiminto tallentaa välimuistiin film_category- ja filmitaulukoiden välisen liitoksen tulokset myöhempää käyttöä varten.
  7. Välimuistiavain – Tämä osoittaa, että muistiin tallentamiseen käytetty välimuistiavain perustuu film_category-sarakkeeseen category_id.
  8. Välimuistitila – Tämä osoittaa, että kysely käyttää loogista välimuistitilaa.
  9. Osumat, Misses, Evictions, Overflows – Kolme riviä tarjoavat tilastoja välimuistista, osumien määrästä, poissaolon, häätöjen ja ylivuodoista suorituksen aikana. Tämä lohko sisältää myös muistin käytön kyselyn suorittamisen aikana.
  10. Hakemiston tarkistus kategorian_pkey-avaimella – Tämä näyttää toiminnon, joka suorittaa indeksitarkistuksen luokkataulukossa ensisijaisen avainindeksin avulla.
  11. Hakemiston ehto – Tämä osoittaa, että indeksiskannaus perustuu ehtoon, joka vastaa luokkataulukon luokkatunnus-saraketta.
  12. Suunnitteluaika – Tämä rivi näyttää kyselyn suunnitteluun kuluvan ajan, joka on 3,005 millisekuntia.
  13. Suoritusaika – Lopuksi tällä rivillä näkyy kyselyn kokonaissuoritusaika, joka on 0,745 millisekuntia.

Siinä se on! Yksityiskohtaiset tiedot yksinkertaisen liitoksen suorittamisesta PostgreSQL:ssä.

Johtopäätös

Löysit EXPLAIN ANALYZE -käskyn tehon ja käytön PostgreSQL:ssä. EXPLAIN ANALYZE -käsky on tehokas työkalu kyselyn analysointiin ja optimointiin. Käytä tätä työkalua tehokkaiden ja vähemmän resursseja vaativien kyselyjen luomiseen.