Noções básicas sobre o gerenciamento de planos de consulta do Aurora PostgreSQL - Amazon Aurora

Noções básicas sobre o gerenciamento de planos de consulta do Aurora PostgreSQL

Com o gerenciamento de planos de consulta ativado para seu cluster de banco de dados do Aurora PostgreSQL, o otimizador gera e armazena planos de execução de consultas para qualquer instrução SQL processada mais de uma vez. O otimizador sempre define o status do primeiro plano gerado de uma instrução gerenciada como Approved e o armazena na visualização dba_plans.

O conjunto de planos aprovados salvos para uma instrução gerenciada é conhecido como linha de base de planos. Enquanto a aplicação é executada, o otimizador pode gerar planos adicionais para as instruções gerenciadas. O otimizador define planos capturados adicionais para um status de Unapproved.

Posteriormente, será possível decidir se os planos Unapproved apresentam boa performance e alterá-los para Approved, Rejected ou Preferred. Para fazer isso, você usa a função apg_plan_mgmt.evolve_plan_baselines ou apg_plan_mgmt.set_plan_status.

Quando o otimizador gera um plano para uma instrução SQL, o gerenciamento de planos de consulta salva o plano na tabela apg_plan_mgmt.plans. Os usuários do banco de dados que receberam a função apg_plan_mgmt podem ver os detalhes do plano consultando a visualização apg_plan_mgmt.dba_plans. Por exemplo, a consulta a seguir lista os detalhes dos planos atualmente na visualização de um cluster de banco de dados do Aurora PostgreSQL que não esteja em produção.

  • sql_hash: um identificador da instrução SQL que é o valor de hash para o texto normalizado da instrução SQL.

  • plan_hash: um identificador exclusivo para o plano que é uma combinação do sql_hash e um hash do plano.

  • status – O status do plano. O otimizador pode executar um plano aprovado.

  • enabled: indica se o plano está pronto para uso (verdadeiro) ou não (falso).

  • plan_outline: uma representação do plano utilizada para recriar o plano de execução real. Os operadores na estrutura em árvore são mapeados para operadores na saída EXPLAIN.

A visualização apg_plan_mgmt.dba_plans tem muitas outras colunas que contêm todos os detalhes do plano, como quando ele foi utilizado pela última vez. Para obter detalhes completos, consulte Referência da visualização apg_plan_mgmt.dba_plans.

Normalização e o hash SQL

Na visualização apg_plan_mgmt.dba_plans, identifique uma instrução gerenciada com um valor de hash SQL. O hash SQL é calculado com base em uma representação normalizada da instrução SQL que remove algumas diferenças, como os valores literais.

O processo de normalização de cada instrução SQL preserva espaço e maiúsculas e minúsculas, para que você ainda possa ler e entender a essência da instrução SQL. A normalização remove ou substitui os itens a seguir.

  • Principais comentários do bloco

  • A palavra-chave EXPLAIN e as opções EXPLAIN e EXPLAIN ANALYZE

  • Espaços à direita

  • Todos os literais

Por exemplo, utilize a instrução a seguir.

/*Leading comment*/ EXPLAIN SELECT /* Query 1 */ * FROM t WHERE x > 7 AND y = 1;

O otimizador normaliza essa instrução da maneira a seguir.

SELECT /* Query 1 */ * FROM t WHERE x > CONST AND y = CONST;

A normalização permite que o mesmo hash SQL seja utilizado para instruções SQL semelhantes que só podem ter diferenças nos valores literais ou de parâmetro. Em outras palavras, podem existir vários planos para o mesmo hash SQL, com um plano diferente que é ideal em condições diferentes.

nota

Uma única instrução SQL utilizada com esquemas diferentes tem planos diferentes porque está vinculada ao esquema específico em tempo de execução. O planejador usa as estatísticas para vinculação do esquema para selecionar o plano ideal.

Para saber mais sobre como o otimizador seleciona um plano, consulte Usar planos gerenciados do Aurora PostgreSQL. Nessa seção, você pode aprender a usar EXPLAIN e EXPLAIN ANALYZE e visualizar um plano antes que ele seja realmente utilizado. Para obter mais detalhes, consulte Analisar o plano selecionado pelo otimizador. Para obter uma imagem que descreve o processo de seleção de um plano, consulte Como o otimizador escolhe que plano executar..