Postgres legt de kosten uit

Postgres Legt De Kosten Uit



Postgres is een krachtig en veelgebruikt open-source relationeel databasesysteem met een sterke reputatie vanwege zijn robuustheid, functionaliteit en prestaties.

Een van de tools die ervoor zorgen dat Postgres overwegend sterk presteert, is de EXPLAIN-opdracht die details geeft over het uitvoeringsplan van een SQL-query.

Wat is het EXPLAIN-commando?

De opdracht EXPLAIN geeft het uitvoeringsplan weer dat de PostgreSQL-planner genereert voor een bepaalde SQL-instructie.







Dit omvat informatie over de geschatte kosten van het uitvoeren van elke querystap. Door deze kosten te onderzoeken, kunnen we begrijpen waarom een ​​query langzaam werkt en hoe we deze kunnen optimaliseren.



PostgreSQL Leg de kosten uit

We gebruiken voornamelijk het EXPLAIN-commando om de informatie over een bepaalde zoekopdracht op te halen. De opdracht voert wat informatie over de query uit.



Neem bijvoorbeeld de query die wordt weergegeven in het volgende:





SELECT f.titel, c.naam
VAN film f
WORD LID van film_category fc ON f.film_id = fc.film_id
DOE MEE categorie c ON fc.category_id = c.category_id;

Als we de opdracht explain uitvoeren op de vorige eenvoudige join:

UITLEG SELECTEER f.titel, c.naam
VAN film f
WORD LID van film_category fc ON f.film_id = fc.film_id
DOE MEE categorie c ON fc.category_id = c.category_id;

We zouden de output moeten krijgen zoals getoond in het volgende:



U merkt misschien dat PostgreSQL voor elke querystap de geschatte kosten van die query retourneert.

  1. startup_cost - Het toont de geschatte kosten om de bewerking te initialiseren voordat deze kan beginnen met het uitvoeren van de rijen.
  2. total_cost – De totale kosten om alle rijen op te halen.
  3. Rijen: het bepaalt het geschatte aantal rijen dat door de query wordt geretourneerd.
  4. Breedte - Dit bepaalt het gemiddelde aantal bytes van alle rijen die door de bewerking worden geretourneerd.

Querykosten in PostgreSQL worden aangegeven in willekeurige eenheden die worden bepaald door de kostenparameters die zijn ingesteld in de serverconfiguratie.

De sleutel van deze parameters is seq_page_cost, waarmee de kosten worden ingesteld van het ophalen van een schijfpagina die niet in de cache staat.

Als u pgAdmin gebruikt, kunt u de functie 'explain analyse' gebruiken om een ​​beter leesbaar en goed gepresenteerd diagram te krijgen voor de opdracht explain. Bijvoorbeeld:

Vervolgens kunt u op elke stap klikken om de statistieken en geschatte kosten te bekijken.

Optimalisatie van de zoekopdrachten op basis van kosten

Bij het optimaliseren van uw query's is het essentieel om te begrijpen dat de lagere kosten meestal een snellere uitvoering betekenen. Daarom kunt u uw zoekopdrachten tegen lagere kosten wijzigen.
Hier zijn enkele factoren waarmee u rekening moet houden:

Gebruik tabelindexen - Indexen verlagen de kosten van zoekopdrachten op basis van zoekopdrachten aanzienlijk door een gegevensstructuur te behouden die sneller zoeken mogelijk maakt.

Gebruik functies en operatoren verstandig – De kostenraming voor functies en operators is niet altijd nauwkeurig, aangezien de werkelijke kosten sterk kunnen afhangen van de specifieke gegevens. Beperk daarom het gebruik van functies en complexe operatoren tot een minimum.

Conclusie

We hebben het concept van kosten onderzocht in een PostgreSQL ANALYZE-opdracht. We hebben besproken wat de opdrachtuitvoer betekent en hoe de kostenuitvoer kan worden gebruikt om de meest efficiënte manier te analyseren om een ​​bepaalde query uit te voeren.