Postgres Förklara kostnad

Postgres Forklara Kostnad



Postgres är ett kraftfullt och allmänt använt relationsdatabassystem med öppen källkod med ett starkt rykte för sin robusthet, funktionalitet och prestanda.

Ett av verktygen som gör Postgres övervägande stark i prestanda är dess EXPLAIN-kommando som ger detaljer om exekveringsplanen för en SQL-fråga.

Vad är kommandot EXPLAIN?

Kommandot EXPLAIN visar exekveringsplanen som PostgreSQL-planeraren genererar för en given SQL-sats.







Detta inkluderar information om de uppskattade kostnaderna för att utföra varje frågesteg. Genom att undersöka dessa kostnader kan vi förstå varför en fråga går långsamt och hur man kan optimera den.



PostgreSQL förklara kostnad

Vi använder huvudsakligen kommandot EXPLAIN för att hämta information om en given fråga. Kommandot matar ut viss information om frågan.



Ta till exempel frågan som visas i följande:





VÄLJ f.titel, c.namn
FRÅN film f
JOIN film_category fc PÅ f.film_id = fc.film_id
JOIN kategori c PÅ fc.category_id = c.category_id;

Om vi ​​kör kommandot explain på föregående enkla join:

EXPLAIN SELECT f.title, c.name
FRÅN 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å utdata som visas i följande:



Du kanske märker att för varje frågesteg returnerar PostgreSQL den uppskattade kostnaden för den frågan.

  1. startup_cost – Den visar den beräknade kostnaden för att initiera operationen innan den kan börja mata ut raderna.
  2. total_cost – Den totala kostnaden för att hämta alla rader.
  3. Rader – Det bestämmer det uppskattade antalet rader som returneras av frågan.
  4. Bredd – Detta bestämmer det genomsnittliga antalet byte för alla rader som returneras av operationen.

Frågekostnader i PostgreSQL anges i godtyckliga enheter som bestäms av kostnadsparametrarna som är inställda i serverkonfigurationen.

Nyckeln till dessa parametrar är seq_page_cost som ställer in kostnaden för en disksidahämtning som inte finns i cachen.

Om du är på pgAdmin kan du använda funktionen 'förklara analysera' för att få ett mer läsbart och välpresenterat diagram för kommandot explain. Till exempel:

Du kan sedan klicka på varje steg för att se statistik och uppskattade kostnader.

Optimera frågorna baserat på kostnad

När du optimerar dina frågor är det viktigt att förstå att den lägre kostnaden vanligtvis innebär snabbare utförande. Därför kan du ändra dina frågor till en lägre kostnad.
Här är några faktorer att ta hänsyn till:

Använd tabellindex – Index minskar kostnaden för sökbaserade frågor avsevärt genom att upprätthålla en datastruktur som möjliggör snabbare uppslag.

Använd funktioner och operatörer klokt – Kostnadsuppskattningen för funktioner och operatörer är inte alltid korrekt, eftersom den faktiska kostnaden kan bero mycket på specifika data. Begränsa därför användningen av funktioner och komplexa operatörer till ett minimum.

Slutsats

Vi utforskade begreppet kostnader i ett PostgreSQL ANALYZE-kommando. Vi diskuterade vad kommandoutmatningen betyder och hur man använder kostnadsutdata för att analysera det mest effektiva sättet att köra en given fråga.