Indexberater verwenden

AlloyDB for PostgreSQL bietet einen Indexberater, der die Abfragen verfolgt, die Ihre Datenbank regelmäßig verarbeitet. Diese Abfragen werden regelmäßig analysiert, um neue Indexe zu empfehlen, mit denen sich die Leistung der Abfragen steigern lässt.

Sie können sich die Empfehlungen als Tabelle ansehen und abfragen oder jederzeit eine Analyse und einen Bericht anfordern.

Empfehlungen des Indexberaters ansehen

AlloyDB führt regelmäßig die Analyse des Indexberaters aus. Die Ergebnisse finden Sie in zwei Tabellenansichten in jeder Ihrer Datenbanken:

  • google_db_advisor_recommended_indexes: Hier werden alle empfohlenen neuen Indexe für die Datenbank aufgelistet. Außerdem enthält er Schätzungen für den für jeden Index erforderlichen Speicherplatz und die Anzahl der Abfragen, auf die sich jeder Index auswirken kann.

  • In google_db_advisor_workload_report sind alle Abfragen aufgeführt, für die der Berater einen oder mehrere neue Indexe empfiehlt. In jeder Zeile werden die Empfehlungen für die entsprechende Suchanfrage zusammengefasst.

Wenn Sie beispielsweise die Ergebnisse der letzten Analyse der Indexempfehlung in Tabellenform sehen möchten, führen Sie diese Abfrage aus:

SELECT * FROM google_db_advisor_recommended_indexes;

Wenn die letzte Analyse des Indexberaters keine Empfehlungen enthält, gibt diese Abfrage eine Tabelle ohne Zeilen zurück.

Da alle diese Berichte als normale Datenbankansichten vorliegen, können Sie Abfragen schreiben, mit denen Sie Informationen nach Belieben filtern oder präsentieren. Wenn Sie beispielsweise einen Bericht mit empfohlenen Indexen und der zugehörigen vollständigen Abfrage sehen möchten, können Sie die Ansichten google_db_advisor_workload_report und google_db_advisor_workload_statements über die jeweiligen query_id-Spalten zusammenführen:

SELECT DISTINCT recommended_indexes, query
FROM google_db_advisor_workload_report r, google_db_advisor_workload_statements s
WHERE r.query_id = s.query_id;

Indexanalyse manuell anfordern

Anstatt auf die nächste geplante Analyse des Indexberaters zu warten, können Sie anfordern, dass AlloyDB sofort eine Analyse ausführt und den Bericht anzeigt. Führen Sie dazu die folgende SQL-Funktion aus:

SELECT * FROM google_db_advisor_recommend_indexes();

Nach Abschluss der Analyse zeigt AlloyDB einen Bericht in Tabellenform mit der Beschreibung und den geschätzten Speicheranforderungen aller empfohlenen Indexe an. Wenn die Analyse keine neuen zu empfehlenden Indexe findet, enthält die Ansicht keine Zeilen.

Die PostgreSQL-Nutzerrolle, mit der dieser Befehl ausgeführt wird, kann sich auf die angezeigten Empfehlungen auswirken. Wenn diese Abfrage von postgres oder einem anderen Nutzer mit der Rolle alloydbsuperuser ausgeführt wird, zeigt AlloyDB alle aktuellen Empfehlungen des Indexberaters an. Andernfalls beschränkt AlloyDB die Anzeige auf Indexempfehlungen, die auf Abfragen des aktuellen Datenbanknutzers basieren.

Empfehlungen des Indexberaters anwenden

Die Spalte index der Tabelle google_db_advisor_recommended_indexes enthält in jeder Zeile eine vollständige PostgreSQL-DDL-Anweisung CREATE INDEX zum Generieren des in dieser Zeile empfohlenen Index.

Führen Sie diese DDL-Anweisung genau wie dargestellt aus, um die Empfehlung dieser Zeile anzuwenden. Das gilt auch für das Kopieren in die Zwischenablage und das Einfügen in einen psql-Prompt.

Betrachten Sie beispielsweise diese Ausgabe bei der manuellen Ausführung einer Analyse mithilfe der im vorherigen Abschnitt beschriebenen Abfrage:

                    index                   | estimated_storage_size_in_mb
--------------------------------------------+------------------------------
 CREATE INDEX ON "School"."Students"("age") |                            3
(1 row)

Dieser Bericht enthält eine einzige Empfehlung: Fügen Sie der Spalte age in der Tabelle Students des Schemas School einen neuen Index mit einer einzelnen Spalte hinzu. Geben Sie eine DDL-Abfrage genau wie im Bericht dargestellt ein, um diese Empfehlung anzuwenden:

CREATE INDEX ON "School"."Students"("age");

Getrackte Abfragen des Indexberaters ansehen

Die Ansicht google_db_advisor_workload_statements enthält eine Liste aller Suchanfragen, die der Indexberater erfasst hat, sowie wichtige Metadaten für jede Anfrage, z. B. die folgenden Messwerte:

  • Häufigkeit, mit der die Instanz diese Abfrage ausgeführt hat
  • Die Gesamtzeit, die die Instanz für die Verarbeitung dieser Abfragen benötigt
  • Die ID des Datenbanknutzers, der diese Abfragen ausführt

Gespeicherte Abfragen des Indexberaters löschen

Sie können das Verhalten des Indexberaters für eine Instanz zurücksetzen, indem Sie die erfassten Abfragen löschen. Führen Sie dazu die folgende SQL-Funktion aus:

SELECT google_db_advisor_reset();

AlloyDB leert sofort die Sammlung der erfassten Abfragen des Indexberaters.

Indexberater konfigurieren

Der Indexierungsberater ist so konzipiert, dass er mit seinen Standardeinstellungen für die meisten Anwendungsfälle funktioniert. Sie können sein Verhalten jedoch durch Festlegen verschiedener Datenbank-Flags optimieren. Weitere Informationen finden Sie auf der Referenzseite Flags für den Indexberater.