Capturar planos de execução do Aurora PostgreSQL - Amazon Aurora

Capturar planos de execução do Aurora PostgreSQL

O gerenciamento de planos de consulta do Aurora PostgreSQL oferece dois modos diferentes para capturar planos de execução de consultas, automático ou manual. Você seleciona o modo definindo o valor de apg_plan_mgmt.capture_plans_baselines como automatic ou manual. Você pode capturar planos de execução para instruções SQL específicas usando a captura de plano manual. Como alternativa, você pode capturar todos (ou os mais lentos) os planos executados duas ou mais vezes durante as execuções do aplicativo usando a captura de plano automática.

Ao capturar planos, o otimizador define o status do primeiro plano capturado de uma instrução gerenciada como approved. O otimizador define o status de todos os planos adicionais capturados para uma instrução gerenciada como unapproved. No entanto, mais de um plano pode, ocasionalmente, ser salvo com o status de approved. Isso pode ocorrer quando vários planos são criados para uma instrução em paralelo e antes da confirmação do primeiro plano da instrução.

Para controlar o número máximo de planos que podem ser capturados e armazenados na visualização dba_plans, defina o parâmetro apg_plan_mgmt.max_plans no grupo de parâmetros no nível de instância de banco de dados. Uma alteração feita no parâmetro apg_plan_mgmt.max_plans exige a reinicialização de uma instância de banco de dados para que um novo valor entre em vigor. Para obter mais informações, consulte o parâmetro apg_plan_mgmt.max_plans.

Capturar manualmente planos para instruções SQL específicas

Caso você tenha um conjunto conhecido de instruções SQL a serem gerenciadas, coloque as instruções em um arquivo SQL e capture manualmente os planos. A seguir, um exemplo de psql de como capturar planos de consulta manualmente para um conjunto de instruções SQL.

psql> SET apg_plan_mgmt.capture_plan_baselines = manual; psql> \i my-statements.sql psql> SET apg_plan_mgmt.capture_plan_baselines = off;

Depois de capturar um plano para cada instrução SQL, o otimizador adicionará uma nova linha à visualização apg_plan_mgmt.dba_plans.

Recomendamos usar instruções EXPLAIN ou EXPLAIN EXECUTE no arquivo script do SQL. Garanta a inclusão de variações suficientes em valores de parâmetros para capturar todos os planos de interesse.

Se você conhecer um plano melhor do que o plano de custo mínimo do otimizador, poderá forçar o otimizador a usar o plano melhor. Para isso, especifique uma ou mais dicas do otimizador. Para obter mais informações, consulte Corrigir planos usando pg_hint_plan. Para comparar a performance dos planos unapproved e approved e aprovar, rejeitar ou excluí-los, consulte Avaliar performance do plano.

Capturar planos automaticamente

Use a captura de planos automática em situações como a seguinte:

  • Você não sabe as instruções SQL específicas que deseja gerenciar.

  • Você tem centenas ou milhares de instruções SQL a serem gerenciadas.

  • O aplicativo usa uma API cliente. Por exemplo, o JDBC usa instruções preparadas não nomeadas ou instruções de modo em lote que não podem ser expressadas em psql.

Para capturar planos automaticamente
  1. Ative a captura de planos automática definindo apg_plan_mgmt.capture_plan_baselines como automatic no grupo de parâmetros no nível da instância de banco de dados. Para obter mais informações, consulte Modificar parâmetros em um grupo de parâmetros de banco de dados.

  2. Reinicialize sua instância de banco de dados.

  3. Quando o aplicativo é executado, o otimizador captura planos de todas as instruções SQL executadas pelo menos duas vezes.

    Quando o aplicativo é executado com as configurações do parâmetro de gerenciamento de planos de consultas padrão, o otimizador captura planos de todas as instruções SQL executadas pelo menos duas vezes. Capturar todos os planos usando os padrões tem pouquíssimos custos indiretos no tempo de execução e pode ser habilitado na produção.

Para desativar a captura de planos automática
  • Defina o parâmetro apg_plan_mgmt.capture_plan_baselines como off do grupo de parâmetros no nível de instância de banco de dados.

Para avaliar a performance dos planos não aprovados e aprovar, rejeitar ou excluí-los, consulte Avaliar performance do plano.