Capturar planos de execução nas réplicas do Aurora PostgreSQL - Amazon Aurora

Capturar planos de execução nas réplicas do Aurora PostgreSQL

O QPM (gerenciamento de planos de consulta) permite capturar os planos de consulta gerados pelas réplicas do Aurora e armazená-los na instância de banco de dados primária do cluster de banco de dados do Aurora. Você pode coletar os planos de consulta de todas as réplicas do Aurora e manter um conjunto de planos ideais em uma tabela persistente central na instância primária. Então, você pode aplicar esses planos a outras réplicas quando necessário. Isso ajuda você a manter a estabilidade dos planos de execução e melhorar a performance das consultas nos clusters de banco de dados e nas versões do mecanismo.

Pré-requisitos

Ativar capture_plan_baselines parameter na réplica do Aurora: defina o parâmetro capture_plan_baselines como automático ou manual para capturar os planos nas réplicas do Aurora. Para ter mais informações, consulte apg_plan_mgmt.capture_plan_baselines.

Instalar a extensão postgres_fdw: você deve instalar a extensão postgres_fdw externa do wrapper de dados para capturar os planos nas réplicas do Aurora. Para instalar a extensão, execute o command a seguir o em cada banco de dados.

postgres=> CREATE EXTENSION IF NOT EXISTS postgres_fdw;

Gerenciar a captura de planos em réplicas do Aurora

Ativar a captura de planos em réplicas do Aurora

Você deve ter privilégios de rds_superuser para criar ou remover a captura de planos nas réplicas do Aurora. Para obter mais informações sobre funções e permissões de usuário, consulte Noções básicas de perfis e permissões do PostgreSQL.

Para capturar planos, chame a função apg_plan_mgmt.create_replica_plan_capture na instância de banco de dados de gravação, conforme mostrado a seguir:

postgres=> CALL apg_plan_mgmt.create_replica_plan_capture('cluster_endpoint', 'password');
  • cluster_endpoint - cluster_endpoint (endpoint de gravação): fornece suporte de failover para a captura de planos em réplicas do Aurora.

  • Senha: siga as diretrizes abaixo ao criar a senha para aumentar a segurança:

    • Deve conter pelo menos oito caracteres.

    • Deve conter pelo menos uma letra maiúscula, uma letra minúscula e um número.

    • Deve ter pelo menos um caractere especial (?, !, #, <, >, * e assim por diante).

nota

Se você alterar o endpoint, a senha ou o número da porta do cluster, deverá executar apg_plan_mgmt.create_replica_plan_capture() novamente com o endpoint e a senha do cluster para reinicializar a captura de plano. Caso contrário, os planos de captura das réplicas do Aurora falharão.

Desativar a captura de planos em réplicas do Aurora

Você pode desativar o parâmetro capture_plan_baselines na réplica do Aurora definindo o respectivo valor como off no grupo de parâmetros.

Remover a captura de planos em réplicas do Aurora

Você pode remover completamente a captura de planos nas réplicas do Aurora, mas certifique-se antes de fazer isso. Para remover a captura de planos, chame apg_plan_mgmt.remove_replica_plan_capture conforme mostrado:

postgres=> CALL apg_plan_mgmt.remove_replica_plan_capture();

Você deve chamar apg_plan_mgmt.create_replica_plan_capture() novamente para ativar a captura de planos nas réplicas do Aurora com o endpoint e a senha do cluster.

Solução de problemas

A seguir vão algumas ideias e soluções alternativas de problemas caso o plano não seja capturado nas réplicas do Aurora conforme o esperado.

  • Configurações de parâmetros: verifique se o parâmetro capture_plan_baselines está definido com o valor adequado para ativar a captura de planos.

  • A extensão postgres_fdw está instalada: use a consulta a seguir para verificar se postgres_fdw está instalada.

    postgres=> SELECT * FROM pg_extension WHERE extname = 'postgres_fdw'
  • create_replica_plan_capture() é chamado: use o comando a seguir para verificar se o mapeamento do usuário existe. Caso contrário, chame create_replica_plan_capture() para inicializar o atributo.

    postgres=> SELECT * FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';
  • Endpoint de cluster - Verifique se o endpoint e o número da porta do cluster são apropriados. Não haverá nenhuma mensagem de erro exibida se esses valores estiverem incorretos.

    Use o comando a seguir para verificar se o endpoint é usado no create() e para verificar em qual banco de dados ele reside:

    postgres=> SELECT srvoptions FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';
  • reload (): você deve chamar apg_plan_mgmt.reload() depois de chamar apg_plan_mgmt.delete_plan() nas réplicas do Aurora para tornar a função delete efetiva. Isso garante que a mudança seja implementada com sucesso.

  • Senha: você deve inserir a senha em create_replica_plan_capture() de acordo com as diretrizes mencionadas. Caso contrário, você receberá uma mensagem de erro. Para obter mais informações, consulte Gerenciar a captura de planos em réplicas do Aurora. Use outra senha que esteja de acordo com os requisitos.

  • Conexão entre regiões: a captura de planos nas réplicas do Aurora também é compatível com o banco de dados global do Aurora, onde a instância de gravação e as réplicas do Aurora podem estar em regiões diferentes. A instância de gravação e a réplica entre regiões devem ser capazes de se comunicar usando o emparelhamento de VPC. Para obter mais informações, consulte Emparelhamento de VPC. Se ocorrer um failover entre regiões, você deverá reconfigurar o endpoint com o novo endpoint primário do cluster de banco de dados.