Compartilhar via


Use as recomendações de índice produzidas pelo ajuste de índice no Banco de Dados do Azure para PostgreSQL – Servidor Flexível

O ajuste de índice mantém as recomendações feitas em um conjunto de tabelas localizadas sob o esquema intelligentperformance no banco de dados azure_sys.

Atualmente, essas informações podem ser lidas usando a página do portal do Microsoft Azure criada para essa finalidade ou executando consultas para recuperar dados de duas exibições disponíveis no intelligent performance do banco de dados azure_sys.

Consumir recomendações de índice por meio do portal do Microsoft Azure

  1. Entre no portal do Azure e selecione sua instância do servidor flexível do Banco de Dados do Azure para PostgreSQL.

  2. Selecione Ajuste de índice na seção Desempenho inteligente do menu.

    • Se o recurso estiver habilitado, mas nenhuma recomendação for produzida ainda, a tela terá a seguinte aparência:

      Captura de tela mostrando o aspecto da página “Ajuste de Índice” quando o recurso está habilitado, mas não há recomendações.

    • Se o recurso estiver desabilitado no momento e nunca tiver produzido recomendações no passado, a tela terá a seguinte aparência:

      Captura de tela mostrando o aspecto da página “Ajuste de Índice” quando o recurso está desabilitado e não há recomendações.

    • Se o recurso estiver habilitado e nenhuma recomendação tiver sido produzida ainda, a tela terá a seguinte aparência:

      Captura de tela mostrando o aspecto da página “Ajuste de Índice” quando o recurso está habilitado e não há recomendações.

    • Se o recurso estiver desabilitado, mas já tiver produzido recomendações, a tela terá a seguinte aparência:

      Captura de tela mostrando o aspecto da página “Ajuste de Índice” quando o recurso está desabilitado e há recomendações.

  3. Se houver recomendações disponíveis, selecione a Exibir recomendações de índice para acessar a lista completa:

    Captura de tela mostrando o aspecto da página “Ajuste de Índice” quando há recomendações e a maneira de acessar a lista completa.

  4. A lista mostra todas as recomendações disponíveis com alguns detalhes de cada uma delas. Por padrão, a lista é classificada por Última recomendação em ordem decrescente, mostrando as recomendações mais recentes na parte superior. No entanto, você pode classificar por qualquer outra coluna e usar a caixa de filtragem para reduzir a lista de itens mostrados aos itens cujos nomes de banco de dados, esquema ou tabela contenham o texto fornecido:

    Captura de tela mostrando o aspecto da página

  5. Para ver mais informações sobre uma recomendação específica, selecione o nome dessa recomendação, e o painel de Detalhes da recomendação de índice será aberto no lado direito da tela para exibir todos os detalhes disponíveis sobre a recomendação:

    Captura de tela mostrando o aspecto do painel de

Consumir recomendações de índice por meio de exibições disponíveis no banco de dados azure_sys

  1. Conecte-se ao banco de dados azure_sys disponível em seu servidor com qualquer função que tenha permissão para se conectar à instância. Os membros da função public podem fazer a leitura a partir dessas exibições.
  2. Execute consultas na exibição sessions para recuperar os detalhes sobre sessões de recomendação.
  3. Execute consultas na exibição recommendations para recuperar as recomendações produzidas pelo ajuste de índice para CREATE INDEX e DROP INDEX.

Exibições

As exibições no banco de dados azure_sys oferecem uma maneira conveniente de acessar e recuperar as recomendações de índice geradas pelo ajuste de índice. Especificamente, as exibições createindexrecommendations e dropindexrecommendations contêm informações detalhadas sobre as recomendações CREATE INDEX e DROP INDEX, respectivamente. Essas exibições expõem dados como a ID da sessão, o nome do banco de dados, o tipo de assistente, os horários de início e término da sessão de ajuste, a ID da recomendação, o tipo de recomendação, o motivo da recomendação e outros detalhes relevantes. Ao consultar essas exibições, os usuários podem acessar e analisar facilmente as recomendações de índice produzidas pelo ajuste de índice.

intelligentperformance.sessions

A exibição sessions expõe todos os detalhes de todas as sessões de ajuste de índice.

nome da coluna tipo de dados Descrição
session_id uuid O identificador globalmente exclusivo atribuído a cada nova sessão de ajuste iniciada.
database_name varchar(64) Nome do banco de dados em cujo contexto a sessão de ajuste de índice foi executada.
session_type intelligentperformance.recommendation_type Indica os tipos de recomendações que essa sessão de ajuste de índice pode produzir. Os valores possíveis são os seguintes: CreateIndex, DropIndex. Sessões do tipo CreateIndex podem produzir recomendações de tipo CreateIndex. Sessões do tipo DropIndex podem produzir recomendações dos tipos DropIndex ou ReIndex.
run_type intelligentperformance.recommendation_run_type Indica a maneira como essa sessão foi iniciada. Os valores possíveis são: Scheduled. As sessões executadas automaticamente de acordo com o valor de index_tuning.analysis_interval, recebem um tipo de execução de Scheduled.
estado intelligentperformance.recommendation_state Indica o estado atual da sessão. Os valores possíveis são: Error, Success, InProgress. As sessões cuja execução falhou são definidas como Error. As sessões que concluíram a execução corretamente, independentemente de terem gerado ou não recomendações, são definidas como Success. As sessões que ainda estão em execução são definidas como InProgress.
start_time carimbo de data/hora sem fuso horário Carimbo de data/hora em que a sessão de ajuste que produziu essa recomendação foi iniciada.
stop_time carimbo de data/hora sem fuso horário Carimbo de data/hora em que a sessão de ajuste que produziu essa recomendação foi iniciada. NULL se a sessão estiver em andamento ou tiver sido abortada devido a alguma falha.
recommendations_count Número inteiro Número total de recomendações produzidas nesta sessão.

intelligentperformance.recommendations

A exibição recommendations expõe todos os detalhes de todas as recomendações geradas em qualquer sessão de ajuste cujos dados ainda estejam disponíveis nas tabelas subjacentes.

nome da coluna tipo de dados Descrição
recommendation_id Número inteiro Número que identifica exclusivamente uma recomendação em todo o servidor.
last_known_session_id uuid Cada sessão de ajuste de índice recebe um Identificador Globalmente Exclusivo. O valor nesta coluna representa o da sessão que mais recentemente produziu essa recomendação.
database_name varchar(64) Nome do banco de dados em cujo contexto foi produzida a recomendação.
recommendation_type intelligentperformance.recommendation_type Indica o tipo da recomendação produzida. Os valores possíveis são: CreateIndex, DropIndex, ReIndex.
initial_recommended_time carimbo de data/hora sem fuso horário Carimbo de data/hora em que a sessão de ajuste que produziu essa recomendação foi iniciada.
last_recommended_time carimbo de data/hora sem fuso horário Carimbo de data/hora em que a sessão de ajuste que produziu essa recomendação foi iniciada.
times_recommended Número inteiro Carimbo de data/hora em que a sessão de ajuste que produziu essa recomendação foi iniciada.
reason text Motivo que justifica por que essa recomendação foi produzida.
recommendation_context json Contém a lista de identificadores de consulta para as consultas que são afetadas pela recomendação, o tipo de índice que está sendo recomendado, o nome do esquema e o nome da tabela na qual o índice está sendo recomendado, as colunas do índice, o nome do índice e o tamanho estimado em bytes do índice recomendado.
Motivos para criar recomendações de índice

Quando o ajuste de índice recomenda a criação de um índice, ele adiciona pelo menos um dos seguintes motivos:

Motivo
Column <column> appear in Join On clause(s) in query <queryId>
Column <column> appear in Equal Predicate clause(s) in query <queryId>
Column <column> appear in Non-Equal Predicate clause(s) in query <queryId>
Column <column> appear in Group By clause(s) in query <queryId>
Column <column> appear in Order By clause(s) in query <queryId>
Motivos para criar recomendações de remoção de índice

Quando o ajuste de índice identifica todos os índices marcados como inválidos, ele propõe removê-lo com o seguinte motivo:

The index is invalid and the recommended recovery method is to reindex.

Para saber mais sobre por que e quando os índices são marcados como inválidos, consulte a documentação oficial REINDEX no PostgreSQL.

Motivos para criar recomendações de remoção de índice

Quando o ajuste de índice detecta um índice que não é usado para, pelo menos, o número de dias definido em index_tuning.unused_min_period, ele propõe removê-lo com o seguinte motivo:

The index is unused in the past <days_unused> days.

Quando o ajuste de índice detecta índices duplicados, uma das duplicatas sobrevive e propõe remover o restante. O motivo fornecido sempre tem o seguinte texto inicial:

Duplicate of <surviving_duplicate>.

Seguido por outro texto que explica o motivo pelo qual cada uma das duplicatas foi escolhida para soltar:

Motivo
The equivalent index "<surviving_duplicate>" is a Primary key, while "<droppable_duplicate>" is not.
The equivalent index "<surviving_duplicate>" is a unique index, while "<droppable_duplicate>" is not.
The equivalent index "<surviving_duplicate>" is a constraint, while "<droppable_duplicate>" is not.
The equivalent index "<surviving_duplicate>" is a valid index, while "<droppable_duplicate>" is not.
The equivalent index "<surviving_duplicate>" has been chosen as replica identity, while "<droppable_duplicate>" is not.
The equivalent index "<surviving_duplicate>" was used to cluster the table, while "<droppable_duplicate>" was not.
The equivalent index "<surviving_duplicate>" has a smaller estimated size compared to "<droppable_duplicate>".
The equivalent index "<surviving_duplicate>" has more tuples compared to "<droppable_duplicate>".
The equivalent index "<surviving_duplicate>" has more index scans compared to "<droppable_duplicate>".
The equivalent index "<surviving_duplicate>" has been fetched more times compared to "<droppable_duplicate>".
The equivalent index "<surviving_duplicate>" has been read more times compared to "<droppable_duplicate>".
The equivalent index "<surviving_duplicate>" has a shorter length compared to "<droppable_duplicate>".
The equivalent index "<surviving_duplicate>" has a smaller oid compared to "<droppable_duplicate>".

Se o índice não só for removível devido à duplicação, mas também não for usado para, pelo menos, o número de dias definido em index_tuning.unused_min_period, o seguinte texto será acrescentado ao motivo:

Also, the index is unused in the past <days_unused> days.

Aplicar recomendações de índice

As recomendações de índice contêm a instrução SQL que você pode executar para implementar a recomendação.

As seções a seguir demonstrarão como essa instrução pode ser obtida para uma recomendação específica.

Depois de obter a instrução, você pode usar qualquer cliente PostgreSQL de sua preferência para se conectar ao seu servidor e aplicar a recomendação.

Obtenha o comando SQL por meio da página Ajuste de índice no portal do Microsoft Azure

  1. Entre no portal do Azure e selecione sua instância do servidor flexível do Banco de Dados do Azure para PostgreSQL.

  2. Selecione Ajuste de índice na seção Desempenho inteligente do menu.

  3. Supondo que o ajuste de índice já tenha produzido recomendações, selecione o resumo Exibir recomendações de índices para acessar a lista de recomendações disponíveis.

    Captura de tela mostrando o aspecto da página “Ajuste de Índice” quando há recomendações e a maneira de acessar a lista completa.

  4. Na lista de recomendações, você pode:

    • Selecione as reticências à direita da recomendação para a qual você deseja obter a instrução SQL e selecione Copiar script SQL.

      Captura de tela mostrando como copiar a instrução SQL da página

    • Ou selecione o nome da recomendação para exibir seus Detalhes da recomendação de índice e selecione o ícone copiar para a área de transferência na caixa de texto Script SQL para copiar a instrução SQL.

      Captura de tela mostrando como copiar a instrução SQL da página