O AlloyDB para PostgreSQL oferece um consultor de índice que monitora as consultas processadas regularmente pelo seu banco de dados. Periodicamente, ele analisa essas consultas para recomendar novos índices que podem aumentar o desempenho das consultas.
É possível ver e consultar as recomendações como uma tabela ou solicitar uma análise e um relatório sob demanda a qualquer momento.
Antes de começar
Antes de usar o consultor de índices, verifique se você atende aos seguintes requisitos.
Ativar as extensões necessárias
No Google Cloud console, acesse a página Clusters.
Clique em um cluster na coluna Nome do Recurso.
Na página Insights de consultas, clique em Editar configurações de consulta.
Clique em Ativar o consultor de índice.
Para ativar as recomendações de índice de pesquisa vetorial para índices de vizinhos mais próximos escalonáveis (ScaNN), ative a flag
scann.enable_preview_features
(Prévia). Para mais informações, consulte Configurar flags de banco de dados de uma instância.
Ver as recomendações do consultor de índice
O AlloyDB executa de maneira automática e periódica a análise do consultor de índice. É possível ler os resultados em duas visualizações em tabela localizadas em cada um dos bancos de dados:
google_db_advisor_recommended_indexes
lista todos os índices novos recomendados para o banco de dados. Também inclui estimativas do armazenamento necessário para cada índice e o número de consultas que cada índice pode afetar.google_db_advisor_workload_report
: lista cada consulta para a qual o consultor recomenda um ou mais índices novos. Cada linha resume as recomendações para a consulta relevante.O
google_db_advisor.enable_vector_index_advisor
permite que a extensãogoogle_db_advisor
recomende índices para consultas de vetor. Você também pode ativar essa flag usando a flagscann.enable_preview_features
(em Prévia).
Por exemplo, para ver os resultados da análise mais recente da recomendação de índice, formatados como uma tabela, execute esta consulta:
SELECT * FROM google_db_advisor_recommended_indexes;
Se a análise mais recente do consultor de índice não encontrar recomendações, essa consulta retornará uma tabela sem linhas.
Como todos esses relatórios existem como visualizações de banco de dados comuns, é possível escrever consultas que filtram ou apresentam informações da maneira que você quiser. Por exemplo, para ver um relatório que combina índices recomendados com a consulta completa associada, mescle as visualizações google_db_advisor_workload_report
e google_db_advisor_workload_statements
nas respectivas colunas 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;
Solicitar manualmente uma análise de índice
Em vez de esperar pela próxima análise programada do consultor de índice, solicite que o AlloyDB execute uma análise imediatamente e mostre o relatório. Para fazer isso, execute esta função SQL:
SELECT * FROM google_db_advisor_recommend_indexes();
Após a conclusão da análise, o AlloyDB mostra um relatório em formato de tabela com a descrição e as necessidades estimadas de armazenamento de todos os índices recomendados. Se a análise não encontrar novos índices para recomendar, a visualização não conterá linhas.
Lembre-se que a função do usuário do PostgreSQL
que executa esse comando pode afetar as recomendações exibidas. Se essa consulta for executada por postgres
ou outro usuário com a função alloydbsuperuser
, o AlloyDB vai mostrar todas as recomendações atuais do consultor de índice. Caso contrário, o AlloyDB limita a exibição a recomendações de índice com base nas consultas emitidas pelo usuário atual do banco de dados.
Aplicar as recomendações do consultor de índice
A coluna index
da visualização google_db_advisor_recommended_indexes
contém, em cada linha, uma instrução DDL CREATE INDEX
completa do PostgreSQL para gerar o índice recomendado nessa linha.
Para aplicar a recomendação dessa linha, execute a instrução DDL exatamente como apresentada. Isso inclui copiar para a área de transferência e colá-lo em um comando psql
.
Por exemplo, considere esta saída da execução manual de uma análise, usando a consulta descrita na seção anterior:
index | estimated_storage_size_in_mb
--------------------------------------------+------------------------------
CREATE INDEX ON "School"."Students"("age") | 3
(1 row)
Esse relatório contém uma única recomendação: adicionar um novo índice de coluna única na coluna age
na tabela Students
do esquema School
. Para aplicar essa recomendação, insira uma consulta DDL exatamente como
representada no relatório:
CREATE INDEX ON "School"."Students"("age");
Ver as consultas rastreadas do consultor de índice
A visualização google_db_advisor_workload_statements
contém uma lista de todas as consultas que o consultor de índice rastreou, bem como metadados importantes para cada uma, como as seguintes métricas:
- O número de vezes que a instância executou essa consulta
- O tempo total que a instância gasta para processar essas consultas
- O ID do usuário do banco de dados que executa essas consultas
Limpar as consultas rastreadas do consultor de índice
Para redefinir o comportamento do consultor de índice em uma instância, limpe as consultas rastreadas. Para fazer isso, execute esta função SQL:
SELECT google_db_advisor_reset();
O AlloyDB esvazia imediatamente a coleção de consultas rastreadas do consultor de índice.
Configurar o consultor de índice
O consultor de índice foi projetado para funcionar na maioria dos casos de uso com as configurações padrão, mas é possível ajustar o comportamento dele definindo várias flags de banco de dados. Para saber mais, consulte Flags do consultor de índice.