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.

Hinweise

Bevor Sie den Index Advisor verwenden, müssen Sie die folgenden Anforderungen erfüllen.

Erforderliche Erweiterungen aktivieren

  1. Rufen Sie in der Google Cloud Console die Seite Cluster auf.

    Zu den Clustern

  2. Klicken Sie in der Spalte Ressourcenname auf einen Cluster.

  3. Klicken Sie auf der Seite Query Insights auf Abfrageeinstellungen bearbeiten.

  4. Klicken Sie auf Indexberater aktivieren.

  5. Wenn Sie Empfehlungen für Vektorsuchindexe für ScaNN-Indizes (Scalable Nearest Neighbors) aktivieren möchten, aktivieren Sie das Flag scann.enable_preview_features (Vorabversion). Weitere Informationen finden Sie unter Datenbank-Flags einer Instanz konfigurieren.

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 werden 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 Anfrage zusammengefasst.

  • Mit google_db_advisor.enable_vector_index_advisor kann die google_db_advisor-Erweiterung Indexe für Vektoranfragen empfehlen. Sie können dieses Flag auch mit dem Flag scann.enable_preview_features (in der Vorschau) aktivieren.

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 bei der letzten Analyse des Indexberaters keine Empfehlungen gefunden werden, wird mit dieser Abfrage eine Tabelle ohne Zeilen zurückgegeben.

Da alle diese Berichte als normale Datenbankansichten vorhanden sind, können Sie Abfragen schreiben, mit denen Sie Informationen auf beliebige Weise filtern oder präsentieren. Wenn Sie beispielsweise einen Bericht sehen möchten, in dem empfohlene Indexe mit der zugehörigen vollständigen Abfrage kombiniert werden, verknüpfen Sie die Ansichten google_db_advisor_workload_report und google_db_advisor_workload_statements über die jeweiligen Spalten query_id:

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 tabellarischen Bericht mit der Beschreibung und dem geschätzten Speicherbedarf aller empfohlenen Indexe an. Wenn bei der Analyse keine neuen zu empfehlenden Indexe gefunden werden, 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 Index Advisor 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. Dazu gehört auch, den Text in die Zwischenablage zu kopieren und in einen psql-Prompt einzufügen.

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");

Vom Indexberater verfolgte Abfragen 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:

  • Die 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

Erfasste 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 unter Flags für den Indexberater.