Usare il consulente per l'indicizzazione

Questa pagina descrive il consulente per l'indice Cloud SQL per PostgreSQL e come visualizzare e applicare i relativi suggerimenti sull'indice.

Cloud SQL per PostgreSQL offre un consulente per l'indicizzazione che tiene traccia delle query gestite dal tuo database. Analizza periodicamente queste query per consigliare nuovi indici in grado di aumentarne le prestazioni.

Puoi visualizzare ed eseguire query sui suggerimenti del consulente per l'indicizzazione sotto forma di tabella oppure richiedere un'analisi on demand e un report in qualsiasi momento.

Attiva i suggerimenti sui suggerimenti sull'indicizzazione

Per abilitare i suggerimenti dei suggerimenti per l'indicizzazione, configura Gemini nei database.

Disattiva i suggerimenti relativi ai suggerimenti sull'indicizzazione

Per disabilitare i suggerimenti relativi ai suggerimenti per l'indicizzazione, rimuovi il flag cloudsql.enable_index_advisor dall'istanza Cloud SQL per PostgreSQL. Per ulteriori informazioni su come rimuovere un flag per l'istanza, consulta Configurare i flag di database.

Visualizza i suggerimenti del consulente per l'indicizzazione

Cloud SQL per PostgreSQL esegue automaticamente l'analisi del consulente per l'indice periodicamente.

Puoi leggere i risultati attraverso le seguenti visualizzazioni tabelle situate in ciascuno dei tuoi database:

  • google_db_advisor_recommended_indexes: elenca eventuali nuovi indici consigliati per ogni database. Include inoltre le stime dello spazio di archiviazione necessario per ogni indice e il numero di query interessate da ogni indice.

  • google_db_advisor_workload_report: elenca ogni query per cui il consulente consiglia uno o più nuovi indici. Ogni riga riassume i suggerimenti per la query pertinente.

Ad esempio, per visualizzare i risultati dell'analisi più recente dei suggerimenti sull'indice, formattati come tabella, esegui questa query:

SELECT * FROM google_db_advisor_recommended_indexes;

Se l'analisi più recente del consulente per l'indicizzazione non trova suggerimenti, questa query restituisce una tabella senza righe.

Poiché tutti questi report esistono come normali viste del database, puoi scrivere query che filtrano o presentano queste informazioni. Ad esempio, per visualizzare un report che accoppia gli indici consigliati alla query associata completa, unisci le viste google_db_advisor_workload_report e google_db_advisor_workload_statements sulle rispettive colonne 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;

Richiedere manualmente un'analisi dell'indice

Anziché attendere la prossima analisi pianificata del consulente per l'indicizzazione, puoi richiedere a Cloud SQL per PostgreSQL di eseguire immediatamente un'analisi e visualizzare il relativo report. Per Cloud SQL per PostgreSQL, devi attendere almeno 15 minuti dopo aver abilitato il consulente per l'indice per eseguire un'analisi manuale. Per farlo, esegui questa funzione SQL:

SELECT * FROM google_db_advisor_recommend_indexes();

Al termine dell'analisi, Cloud SQL per PostgreSQL mostra un report in formato tabella con la descrizione e le esigenze di archiviazione stimate di qualsiasi indice consigliato. Se l'analisi non trova nuovi indici da consigliare, la visualizzazione non contiene righe.

Tieni presente che il ruolo utente che esegue questo comando può influire sui suggerimenti visualizzati. Cloud SQL per PostgreSQL limita la visualizzazione ai suggerimenti sugli indici in base alle query inviate dall'utente corrente del database.

Applica i suggerimenti del consulente per l'indicizzazione

La colonna index della vista google_db_advisor_recommended_indexes contiene, in ogni riga, un'istruzione DDL CREATE INDEX PostgreSQL completa per generare l'indice consigliato in quella riga.

Per applicare il suggerimento della riga, esegui l'istruzione DDL, esattamente come presentata. Ad esempio, puoi copiarlo negli appunti e incollarlo in un prompt di psql.

Ad esempio, considera questo output tramite l'esecuzione manuale di un'analisi, utilizzando la query descritta nella sezione precedente:

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

Questo report contiene un unico consiglio: l'aggiunta di un indice a colonna singola sulla colonna age nella tabella Students dello schema School. Per applicare questo consiglio, inserisci una query DDL come rappresentata nel report:

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

Visualizzare le query monitorate del consulente per l'indicizzazione

La visualizzazione google_db_advisor_workload_statements contiene un elenco di tutte le query monitorate dal consulente per l'indicizzazione, oltre a metadati importanti per ognuna, come le seguenti metriche:

  • Il numero di volte in cui l'istanza ha eseguito ciascuna query
  • Il tempo totale impiegato dall'istanza per elaborare queste query
  • L'ID dell'utente del database che esegue queste query

Cancella le query monitorate del consulente per l'indicizzazione

Puoi reimpostare il comportamento del consulente sull'indicizzazione su un'istanza, cancellando le relative query monitorate. Per farlo, esegui questa funzione SQL:

SELECT google_db_advisor_reset();

Cloud SQL per PostgreSQL svuota immediatamente la raccolta delle query monitorate del consulente per l'indice.