Postgres erklärt die Kosten

Postgres Erklart Die Kosten



Postgres ist ein leistungsstarkes und weit verbreitetes relationales Open-Source-Datenbanksystem, das für seine Robustheit, Funktionalität und Leistung bekannt ist.

Eines der Tools, die Postgres besonders leistungsstark machen, ist der EXPLAIN-Befehl, der Details zum Ausführungsplan einer SQL-Abfrage bereitstellt.

Was ist der EXPLAIN-Befehl?

Der EXPLAIN-Befehl zeigt den Ausführungsplan an, den der PostgreSQL-Planer für eine bestimmte SQL-Anweisung generiert.







Dazu gehören Informationen zu den geschätzten Kosten für die Durchführung jedes Abfrageschritts. Durch die Untersuchung dieser Kosten können wir verstehen, warum eine Abfrage langsam ausgeführt wird und wie wir sie optimieren können.



PostgreSQL erklärt die Kosten

Wir verwenden hauptsächlich den EXPLAIN-Befehl, um Informationen zu einer bestimmten Abfrage abzurufen. Der Befehl gibt einige Informationen zur Abfrage aus.



Nehmen Sie zum Beispiel die folgende Abfrage:





SELECT f.title, c.name
VON film f
JOIN film_category fc ON f.film_id = fc.film_id
JOIN Kategorie c ON fc.category_id = c.category_id;

Wenn wir den Befehl „explain“ für den vorherigen einfachen Join ausführen:

EXPLAIN SELECT f.title, c.name
VON film f
JOIN film_category fc ON f.film_id = fc.film_id
JOIN Kategorie c ON fc.category_id = c.category_id;

Wir sollten die Ausgabe wie folgt erhalten:



Möglicherweise stellen Sie fest, dass PostgreSQL für jeden Abfrageschritt die geschätzten Kosten dieser Abfrage zurückgibt.

  1. Startup_cost – Zeigt die geschätzten Kosten für die Initialisierung des Vorgangs an, bevor mit der Ausgabe der Zeilen begonnen werden kann.
  2. total_cost – Die Gesamtkosten zum Abrufen aller Zeilen.
  3. Zeilen – Bestimmt die geschätzte Anzahl der Zeilen, die von der Abfrage zurückgegeben werden.
  4. Breite – Dies bestimmt die durchschnittliche Anzahl von Bytes aller Zeilen, die von der Operation zurückgegeben werden.

Abfragekosten werden in PostgreSQL in willkürlichen Einheiten angegeben, die durch die in der Serverkonfiguration festgelegten Kostenparameter bestimmt werden.

Der Schlüssel dieser Parameter ist seq_page_cost, der die Kosten für den Abruf einer Festplattenseite festlegt, die sich nicht im Cache befindet.

Wenn Sie pgAdmin verwenden, können Sie die Funktion „Explain Analysis“ verwenden, um ein besser lesbares und besser dargestelltes Diagramm für den Explain-Befehl zu erhalten. Zum Beispiel:

Anschließend können Sie auf jeden Schritt klicken, um die Statistiken und geschätzten Kosten anzuzeigen.

Optimierung der Abfragen basierend auf den Kosten

Bei der Optimierung Ihrer Abfragen ist es wichtig zu verstehen, dass geringere Kosten in der Regel eine schnellere Ausführung bedeuten. Daher können Sie Ihre Abfragen zu geringeren Kosten ändern.
Hier sind einige Faktoren, die Sie berücksichtigen sollten:

Verwenden Sie Tabellenindizes – Indizes reduzieren die Kosten suchbasierter Abfragen erheblich, indem sie eine Datenstruktur beibehalten, die eine schnellere Suche ermöglicht.

Verwenden Sie Funktionen und Operatoren mit Bedacht – Die Kostenschätzung für Funktionen und Betreiber ist nicht immer genau, da die tatsächlichen Kosten stark von den spezifischen Daten abhängen können. Beschränken Sie daher den Einsatz von Funktionen und komplexen Operatoren auf ein Minimum.

Abschluss

Wir haben das Kostenkonzept in einem PostgreSQL-Befehl ANALYZE untersucht. Wir haben besprochen, was die Befehlsausgabe bedeutet und wie man anhand der Kostenausgabe analysiert, wie eine bestimmte Abfrage am effizientesten ausgeführt werden kann.