Teilen über


Überwachen mit pg_stat_statements

Von Bedeutung

Lakebase Autoscaling ist in Beta in den folgenden Regionen: eastus2, westeurope, westus.

Lakebase Autoscaling ist die neueste Version von Lakebase mit automatischer Berechnung, Skalierung bis Null, Verzweigung und sofortiger Wiederherstellung. Einen Featurevergleich mit Lakebase Provisioned finden Sie unter Auswahl zwischen Versionen.

pg_stat_statements ist eine Postgres-Erweiterung, die eine detaillierte statistische Ansicht der SQL-Anweisungsausführung in Ihrer Lakebase Postgres-Datenbank bietet. Es verfolgt Informationen wie Ausführungsanzahl, Gesamt- und durchschnittliche Ausführungszeiten und vieles mehr, was Ihnen hilft, die SQL-Abfrageleistung zu analysieren und zu optimieren.

Wann pg_stat_statements verwendet werden soll

Verwenden Sie pg_stat_statements bei Bedarf:

  • Detaillierte Abfrageausführungsstatistiken und Leistungsmetriken
  • Identifizierung von langsamen oder häufig ausgeführten Abfragen
  • Abfrageleistungsanalyse und Optimierungserkenntnisse
  • Analyse der Datenbankauslastung und Kapazitätsplanung
  • Integration in benutzerdefinierte Überwachungstools und Dashboards

Aktivieren von pg_stat_statements

Die pg_stat_statements Erweiterung ist in Lakebase Postgres verfügbar. Um es zu aktivieren:

  1. Stellen Sie mithilfe des SQL-Editors oder eines Postgres-Clients eine Verbindung mit Ihrer Datenbank her.

  2. Führen Sie den folgenden SQL-Befehl aus, um die Erweiterung zu erstellen:

    CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
    
  3. Die Erweiterung beginnt sofort nach der Erstellung mit der Erfassung von Statistiken.

Datenpersistenz

Statistiken, die von der pg_stat_statements Erweiterung gesammelt werden, werden im Arbeitsspeicher gespeichert und werden nicht beibehalten, wenn die Lakebase-Berechnung angehalten oder neu gestartet wird. Wenn Ihre Berechnung beispielsweise aufgrund von Inaktivität nach unten skaliert wird, gehen alle vorhandenen Statistiken verloren. Neue Statistiken werden gesammelt, sobald die Berechnung neu gestartet wird.

Dieses Verhalten bedeutet:

  • Statistiken werden nach Neustarts oder Unterbrechungen von Rechnern zurückgesetzt
  • Eine langfristige Leistungsanalyse erfordert eine konsistente Berechnungsverfügbarkeit.
  • Möglicherweise möchten Sie wichtige Statistiken vor geplanten Wartungs- oder Neustarts exportieren.

Hinweis

Erwägen Sie, Ihre Überwachungsabfragen regelmäßig auszuführen und Ergebnisse extern zu speichern, wenn Sie historische Leistungsdaten über Compute-Lebenszyklusereignisse hinweg benötigen.

Weitere Informationen: Postgres-Erweiterungen

Abfrageausführungsstatistiken

Nach dem Aktivieren der Erweiterung können Sie mithilfe der pg_stat_statements Ansicht Ausführungsstatistiken abfragen. Diese Ansicht enthält eine Zeile pro unterschiedliche Datenbankabfrage, die verschiedene Statistiken anzeigt:

SELECT * FROM pg_stat_statements LIMIT 10;

Die Ansicht enthält Details wie:

Benutzer-ID dbid queryid Anfrage calls
16391 16384 -9047282044438606287 SELECT * FROM-Benutzer; 10

Eine vollständige Liste der Spalten und Beschreibungen finden Sie in der PostgreSQL-Dokumentation.

Wichtige Überwachungsabfragen

Verwenden Sie diese Abfragen, um die Datenbankleistung zu analysieren:

Suchen nach langsamsten Abfragen

Diese Abfrage identifiziert Abfragen mit der höchsten durchschnittliche Ausführungszeit, die auf ineffiziente Abfragen hinweisen kann, die eine Optimierung benötigen:

SELECT
    query,
    calls,
    total_exec_time,
    mean_exec_time,
    (total_exec_time / calls) AS avg_time_ms
FROM pg_stat_statements
ORDER BY mean_exec_time DESC
LIMIT 20;

Suchen der am häufigsten ausgeführten Abfragen

Die am häufigsten ausgeführten Abfragen sind häufig kritische Pfade und Optimierungskandidaten. Diese Abfrage enthält Cachetrefferverhältnisse, um Abfragen zu identifizieren, die von einer besseren Indizierung profitieren können:

SELECT
    query,
    calls,
    total_exec_time,
    rows,
    100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent
FROM pg_stat_statements
ORDER BY calls DESC
LIMIT 20;

Suchen von Abfragen mit höchster E/A

Diese Abfrage identifiziert Abfragen, die die meisten Datenträger-E/A-Vorgänge ausführen, was sich auf die Gesamtleistung der Datenbank auswirken kann:

SELECT
    query,
    calls,
    shared_blks_read + shared_blks_written AS total_io,
    shared_blks_read,
    shared_blks_written
FROM pg_stat_statements
ORDER BY (shared_blks_read + shared_blks_written) DESC
LIMIT 20;

Die zeitaufwändigsten Abfragen finden

Diese Abfrage identifiziert Abfragen, die die gesamte Ausführungszeit für alle Ausführungsvorgänge verbrauchen:

SELECT
    query,
    calls,
    total_exec_time,
    mean_exec_time,
    rows
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;

Suchen nach Abfragen, die viele Zeilen zurückgeben

Diese Abfrage identifiziert Abfragen, die große Resultsets zurückgeben, die von Paginierung oder Filterung profitieren können:

SELECT
    query,
    calls,
    rows,
    (rows / calls) AS avg_rows_per_call
FROM pg_stat_statements
ORDER BY rows DESC
LIMIT 10;

Zurücksetzen von Statistiken

So setzen Sie die gesammelten Statistiken zurück:pg_stat_statements

Hinweis

Nur databricks_superuser Rollen verfügen über die berechtigung, die zum Ausführen dieser Funktion erforderlich ist. Die mit einem Lakebase-Projekt erstellte Standardrolle und die Rollen, die in der Lakebase-App erstellt werden, erhalten die Mitgliedschaft in der databricks_superuser-Rolle.

SELECT pg_stat_statements_reset();

Diese Funktion löscht alle gesammelten statistischen Daten, z. B. Ausführungszeiten und Zählungen für SQL-Anweisungen, und beginnt mit der Erfassung neuer Daten. Es ist besonders nützlich, wenn Sie mit dem Sammeln von Leistungsstatistiken neu beginnen möchten.

Ressourcen

Weitere Informationen: PostgreSQL-Dokumentation