Verstehen von Statistiken

Abgeschlossen

Wenn eine Abfrage ausgeführt wird, muss diese ein Plan erstellen, um zu entscheiden, wie auf die Daten zugegriffen werden soll. Wenn eine SELECT-Abfrage beispielsweise jede Zeile zurückgibt, hat die Verwendung eines Index keinen Vorteil, und es wäre effizienter, die gesamte Tabelle zu überprüfen. In diesem Szenario ist es einfach, die Abfrage zu planen. Die meisten Abfragepläne sind jedoch nicht so einfach zu lösen.

Angenommen, Sie führen eine Abfrage aus, die nach jeder Bestellung zwischen 10,00 und 20,00 US-Dollar sucht. Zunächst ist nicht bekannt, ob dies alle Daten oder nur eine kleine Teilmenge ist. Bis die Daten vorliegen ist es daher schwer, die Abfragestrategie zu planen. Wenn bekannt ist, dass die Tabelle Bestellungen mit einem Kaufpreis von 1,00 bis 800,00 US-Dollar enthält, könnten wir mithilfe eines Index nach einem kleinen Teil der Daten suchen. Diese Informationen reichen jedoch noch immer nicht aus für unseren Abfrageplan. Obwohl die Bestellungen einen Kaufpreis von 1,00 bis 800,00 aufweisen, liegt der Preis von 95 Prozent der Bestellungen zwischen 10,00 und 20,00 US-Dollar, und eine Überprüfung der Daten ist tatsächlich der effektivste Plan.

In Szenarios wie dem vorherigen Beispiel benötigt PostgreSQL detaillierte Statistiken, um den optimalen Abfrageplan verwenden zu können.

Für die Überwachung von Planungs- und Ausführungsstatistiken gibt es eine PostgreSQL-Erweiterung namens pg_stat_statements. pg_stat_statements ist standardmäßig in Azure Database for PostgreSQL aktiviert und ermöglicht es Mitgliedern der Rolle pg_read_all_stats, Statistiken mithilfe mehrerer pg_stat-Sichten abzufragen. Die folgende Abfrage gibt die Abfrageaktivität mithilfe der Sicht pg_stat_activity zurück:

SELECT * FROM pg_stat_activity;

Screenshot of pg_stat_activity query.

Deaktivieren von pg_stat_statements

Wenn Ihre Abfragen eindeutig sind und Sie die gleiche Abfrage nicht regelmäßig wiederholen, sind Abfrageverlaufsdaten weniger nützlich. Wenn Sie zudem keine pg_stat-Sichten verwenden, profitieren Sie nicht davon. Es fällt ein Mehraufwand für die Wartung von pg_stat_statements an, der bis zu 50 Prozent betragen kann, und Sie können die Nachverfolgung von pg_stat_statements in diesen Szenarios deaktivieren.

Führen Sie die folgenden Schritte aus, um die Nachverfolgung von pg_stat_statements zu deaktivieren:

  1. Navigieren Sie zum Azure-Portal, und wählen Sie Ihren Azure Database for PostgreSQL-Server aus.
  2. Klicken Sie auf Serverparameter, und navigieren Sie zur Einstellung pg_stat_statements.track. Screenshot of pg_statements.track setting.
  3. Wenn Sie die Nachverfolgung deaktivieren möchten, wählen Sie KEINE aus.
  4. Wählen Sie ALLE für eine genauere Nachverfolgung aus.
  5. Die Standardeinstellung lautet Top.
  6. Wählen Sie Speichern aus.