Postgres Forklar kostnad

Postgres Forklar Kostnad



Postgres er et kraftig og mye brukt åpen kildekode relasjonsdatabasesystem med et sterkt rykte for sin robusthet, funksjonalitet og ytelse.

Et av verktøyene som gjør Postgres overveiende sterk i ytelse er EXPLAIN-kommandoen som gir detaljer om utførelsesplanen for en SQL-spørring.

Hva er EXPLAIN-kommandoen?

EXPLAIN-kommandoen viser utførelsesplanen som PostgreSQL-planleggeren genererer for en gitt SQL-setning.







Dette inkluderer en informasjon om de estimerte kostnadene ved å utføre hvert spørringstrinn. Ved å undersøke disse kostnadene kan vi forstå hvorfor en spørring går sakte og hvordan vi kan optimalisere den.



PostgreSQL Forklar kostnad

Vi bruker hovedsakelig EXPLAIN-kommandoen for å hente informasjonen om en gitt spørring. Kommandoen gir ut noe informasjon om spørringen.



Ta for eksempel spørringen som vises i følgende:





VELG f.tittel, c.navn
FRA film f
JOIN film_category fc PÅ f.film_id = fc.film_id
JOIN kategori c PÅ fc.category_id = c.category_id;

Hvis vi kjører forklaringskommandoen på forrige enkle sammenføyning:

FORKLAR VELG f.tittel, c.navn
FRA film f
JOIN film_category fc PÅ f.film_id = fc.film_id
JOIN kategori c PÅ fc.category_id = c.category_id;

Vi bør få utgangen som vist i følgende:



Du vil kanskje legge merke til at for hvert spørringstrinn returnerer PostgreSQL den estimerte kostnaden for den spørringen.

  1. startup_cost – Den viser den estimerte kostnaden for å initialisere operasjonen før den kan begynne å skrive ut radene.
  2. total_cost – Den totale kostnaden for å hente alle rader.
  3. Rader – Det bestemmer det estimerte antallet rader som returneres av spørringen.
  4. Bredde – Dette bestemmer gjennomsnittlig antall byte for alle radene som returneres av operasjonen.

Spørringskostnader i PostgreSQL er angitt i vilkårlige enheter som bestemmes av kostnadsparametrene som er satt i serverkonfigurasjonen.

Nøkkelen til disse parameterne er seq_page_cost som angir kostnadene for en disksidehenting som ikke er i hurtigbufferen.

Hvis du er på pgAdmin, kan du bruke funksjonen 'forklar analyse' for å få et mer lesbart og godt presentert diagram for forklaringskommandoen. For eksempel:

Du kan deretter klikke på hvert trinn for å se statistikken og estimerte kostnader.

Optimalisering av spørringene basert på kostnad

Når du optimaliserer søkene dine, er det viktig å forstå at lavere kostnad vanligvis betyr raskere utførelse. Derfor kan du endre søkene dine for en lavere kostnad.
Her er noen faktorer å vurdere:

Bruk tabellindekser – Indekser reduserer kostnadene for søkebaserte søk betydelig ved å opprettholde en datastruktur som muliggjør raskere oppslag.

Bruk funksjoner og operatører med omhu – Kostnadsestimatet for funksjoner og operatører er ikke alltid nøyaktig, da den faktiske kostnaden kan avhenge sterkt av de spesifikke dataene. Begrens derfor bruken av funksjoner og komplekse operatører til et minimum.

Konklusjon

Vi utforsket kostnadsbegrepet i en PostgreSQL ANALYZE-kommando. Vi diskuterte hva kommandoutgangen betyr og hvordan man bruker kostnadsutgangen til å analysere den mest effektive måten å kjøre en gitt spørring på.