Postgres Forklar omkostninger

Postgres Forklar Omkostninger



Postgres er et kraftfuldt og meget brugt open source relationsdatabasesystem med et stærkt ry for dets robusthed, funktionalitet og ydeevne.

Et af de værktøjer, der gør Postgres overvejende stærk i ydeevne, er dens EXPLAIN-kommando, som giver detaljer om udførelsesplanen for en SQL-forespørgsel.

Hvad er EXPLAIN-kommandoen?

EXPLAIN-kommandoen viser den udførelsesplan, som PostgreSQL-planlæggeren genererer for en given SQL-sætning.







Dette inkluderer en information om de anslåede omkostninger ved at udføre hvert forespørgselstrin. Ved at undersøge disse omkostninger kan vi forstå, hvorfor en forespørgsel kører langsomt, og hvordan man optimerer den.



PostgreSQL Forklar omkostninger

Vi bruger hovedsageligt EXPLAIN-kommandoen til at hente informationen om en given forespørgsel. Kommandoen udsender nogle oplysninger om forespørgslen.



Tag for eksempel forespørgslen, der vises i det følgende:





VÆLG f.titel, c.navn
FRA film f
JOIN film_category fc ON f.film_id = fc.film_id
JOIN kategori c PÅ fc.category_id = c.category_id;

Hvis vi kører forklare kommandoen på den forrige simple join:

FORKLAR VÆLG f.titel, c.navn
FRA film f
JOIN film_category fc ON f.film_id = fc.film_id
JOIN kategori c PÅ fc.category_id = c.category_id;

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



Du bemærker måske, at for hvert forespørgselstrin returnerer PostgreSQL den anslåede pris for den forespørgsel.

  1. startup_cost – Det viser de anslåede omkostninger for at initialisere operationen, før den kan begynde at udskrive rækkerne.
  2. total_cost – Den samlede pris for at hente alle rækker.
  3. Rækker – Det bestemmer det anslåede antal rækker, der returneres af forespørgslen.
  4. Bredde – Dette bestemmer det gennemsnitlige antal bytes af alle rækkerne, som returneres af operationen.

Forespørgselsomkostninger i PostgreSQL er angivet i vilkårlige enheder, som bestemmes af de omkostningsparametre, der er indstillet i serverkonfigurationen.

Nøglen til disse parametre er seq_page_cost, som angiver prisen på en disksidehentning, der ikke er i cachen.

Hvis du er på pgAdmin, kan du bruge funktionen 'forklar analyse' for at få et mere læsbart og velpræsenteret diagram for forklare kommandoen. For eksempel:

Du kan derefter klikke på hvert trin for at se statistik og estimerede omkostninger.

Optimering af forespørgslerne baseret på omkostninger

Når du optimerer dine forespørgsler, er det vigtigt at forstå, at de lavere omkostninger normalt betyder hurtigere eksekvering. Derfor kan du ændre dine forespørgsler til en lavere pris.
Her er nogle faktorer, du skal overveje:

Brug tabelindekser – Indekser reducerer omkostningerne ved søgebaserede forespørgsler markant ved at opretholde en datastruktur, der giver mulighed for hurtigere opslag.

Brug funktioner og operatører med omtanke – Omkostningsestimatet for funktioner og operatører er ikke altid præcist, da de faktiske omkostninger kan afhænge meget af de specifikke data. Begræns derfor brugen af ​​funktioner og komplekse operatører til et minimum.

Konklusion

Vi undersøgte begrebet omkostninger i en PostgreSQL ANALYZE-kommando. Vi diskuterede, hvad kommandooutputtet betyder, og hvordan man bruger omkostningsoutputtet til at analysere den mest effektive måde at køre en given forespørgsel på.