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
Rufen Sie in der Google Cloud Console die Seite Cluster auf.
Klicken Sie in der Spalte Ressourcenname auf einen Cluster.
Klicken Sie auf der Seite Query Insights auf Abfrageeinstellungen bearbeiten.
Klicken Sie auf Indexberater aktivieren.
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 diegoogle_db_advisor
-Erweiterung Indexe für Vektoranfragen empfehlen. Sie können dieses Flag auch mit dem Flagscann.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.