Analisar árvores de bloqueio para o Amazon Aurora PostgreSQL com o CloudWatch Database Insights - Amazon CloudWatch

Analisar árvores de bloqueio para o Amazon Aurora PostgreSQL com o CloudWatch Database Insights

Para solucionar problemas de performance causados por bloqueios, é possível analisar árvores de bloqueio para bancos de dados Amazon Aurora PostgreSQL com o CloudWatch Database Insights usando as opções a seguir.

  • Menu suspenso Dividido por: escolha as dimensões Objeto de bloqueio, Sessão de bloqueio ou SQL de bloqueio no gráfico Carga do banco de dados para ver como os principais bloqueadores diferentes contribuem para a carga do banco de dados ao longo do tempo. Com o gráfico de carga do banco de dados, é possível analisar se os principais bloqueadores são constantes ou mudam com frequência. Em seguida, avance para o processo de solução de problemas dos bloqueadores.

    A tabela SQL principal com uma sessão de bloqueio selecionada no menu suspenso Dividido por
  • Guia Análise de bloqueio: escolha Análise de carga do banco de dados e depois a guia Análise de bloqueio para visualizar informações sobre a contenção de bloqueios no banco de dados.

    A tabela Árvores de bloqueio no painel de carga do banco de dados
nota

O CloudWatch Database Insights é compatível com a análise de bloqueio para todas as versões do Aurora PostgreSQL. Para analisar árvores de bloqueio, você deve ter o modo Avançado do Database Insights habilitado. Para obter informações sobre como ativar o modo Avançado, consulte Ativação do modo Avançado do Database Insights para Amazon Aurora e Turning on the Advanced mode of Database Insights for Amazon Relational Database Service.

A guia de análise de bloqueios fornece informações sobre a contenção de bloqueios para seu banco de dados. A visualização da árvore de bloqueio mostra os relacionamentos e dependências entre as solicitações de bloqueio de diferentes sessões.

O Database Insights captura snapshots a cada 15 segundos. Os snapshots mostram os dados de bloqueio do seu banco de dados em um determinado momento.

nota

Quando o CloudWatch detecta um alto nível de bloqueio, ele exibe o banner Alto bloqueio detectado para a guia Análise de bloqueio. O CloudWatch detectará um alto nível de bloqueio se capturar um snapshot de bloqueio para cada intervalo de 15 segundos por 15 minutos consecutivos.

Cada nó na árvore representa uma sessão específica. O nó pai é uma sessão que está bloqueando seus nós filhos.

Para analisar árvores de bloqueio, use o procedimento a seguir.

Para analisar árvores de bloqueio
  1. Faça login no AWS Management Console e abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/.

  2. Escolha Insights.

  3. Escolha Database Insights.

  4. Escolha a visualização Instância de banco de dados.

  5. Escolha uma instância de banco de dados.

  6. Escolha a guia Análise de carga do banco de dados.

  7. Escolha a guia Análise de bloqueio.

    Para visualizar os dados de bloqueio de uma instância de banco de dados, escolha um período de 1 dia ou menos.

  8. Escolha uma janela de snapshot. Por padrão, o Database Insights escolhe a janela de snapshot com o maior número de sessões bloqueadas.

    Tabela de análise de bloqueios
  9. Para visualizar os dados de bloqueio de um snapshot, escolha a hora em que o Database Insights capturou o snapshot.

  10. Para expandir uma árvore de bloqueio, escolha a seta ao lado do ID da sessão.

    Árvore de bloqueio expandida

Dados de snapshot de bloqueio

O Database Insights fornece as seguintes informações para cada solicitação de bloqueio. Para ver as colunas que não estão habilitadas por padrão, escolha o ícone Configurações da tabela Árvores de bloqueio e habilite outras colunas.

Nome da coluna Definição Padrão de coluna Observações

session_id

O identificador exclusivo da sessão.

Sim

O session_id é derivado de HEX(pg_stat_activity.backend_start).HEX(pg_locks.pid).

pid

O PID deste backend.

Sim

pg_locks.pid

blocked_sessions_count

O número de sessões bloqueadas por este bloqueio.

Sim

O blocked_sessions_count é derivado do número de IDs de sessão bloqueados por este bloqueio.

last_query_executed

A última consulta executada por esta sessão. Para bloqueadores, não pode ser a consulta que mantém o bloqueio ativo.

Sim

pg_stat_activity.query

wait_event

O nome do evento de espera se o backend estiver aguardando no momento; caso contrário, o valor será NULL.

Sim

pg_stat_activity.wait_event

blocking_time_(In Seconds)

O tempo (em segundos) desde o início deste bloqueio.

Sim

O blocking_time_(In Seconds) é derivado do horário de início da transação em espera (pg_locks.waitstart) para o primeiro aguardante.

blocking_mode

O modo de bloqueio mantido pela sessão bloqueadora.

Não

pg_locks.mode

waiting_mode

O modo de bloqueio solicitado pela sessão em espera.

Não

pg_locks.mode

application

O nome da aplicação que está conectada a este backend.

Não

pg_stat_activity.application_name

blocking_txn_start_time

A hora de início da transação de bloqueio ou null se nenhuma transação estiver ativa.

Não

pg_stat_activity.xact_start

waiting_start_time

A hora em que uma sessão de usuário em espera começou a esperar por esse bloqueio, ou null se o bloqueio for mantido.

Não

pg_locks.waitstart

session_start_time

A hora em que uma sessão de usuário foi iniciada.

Não

pg_stat_activity.backend_start

state

O estado de um backend.

Não

pg_stat_activity.state

wait_event_type

O tipo de evento de espera pelo qual esta sessão está aguardando.

Não

pg_stat_activity.wait_event_type

last_query_exec_time

O momento em que a última consulta foi iniciada.

Não

pg_stat_activity.query_start

user

O nome do usuário conectado a esse backend.

Não

pg_stat_activity.usename

host

O nome do host do cliente conectado, conforme relatado por uma pesquisa de DNS reversa de client_addr. Este campo só será não nulo para conexões IP e somente quando log_hostname estiver habilitado.

Não

pg_stat_activity.client_hostname

port

O número da porta TCP que o cliente está usando para comunicação com esse backend, ou -1 se um socket Unix for usado. Se esse campo for nulo, isso indica que esse é um processo interno do servidor.

Não

pg_stat_activity.client_port

client_address

O endereço IP do cliente conectado a esse backend. Quando o campo é nulo, indica que o cliente está conectado por meio de um socket Unix na máquina do servidor ou que esse é um processo interno, como autovacuum.

Não

pg_stat_activity.client_addr

granted

O valor será verdadeiro se o bloqueio for mantido e falso se o bloqueio estiver sendo aguardado.

Não

pg_locks.granted

waiting_tuple

O número da tupla alvo do bloqueio dentro da página, ou nulo se o alvo não for uma tupla.

Não

pg_locks.tuple

waiting_page

O número da página alvo do bloqueio dentro da relação, ou nulo se o alvo não for uma página de relação ou tupla.

Não

pg_locks.page

waiting_transaction_id

O ID da transação alvo do bloqueio, ou nulo se o alvo não for um ID de transação.

Não

pg_locks.transactionid

waiting_relation

O OID da relação alvo do bloqueio, ou nulo se o alvo não for uma relação ou parte de uma relação.

Não

pg_locks.relation

waiting_object_id

O OID do alvo do bloqueio em seu catálogo do sistema, ou nulo se o alvo não for um objeto geral do banco de dados.

Não

pg_locks.objid

waiting_database_id

O OID do banco de dados no qual o alvo do bloqueio existe, zero se o alvo for um objeto compartilhado ou nulo se o alvo for um ID de transação.

Não

pg_locks.database

waiting_database_name

O nome do banco de dados em que o alvo do bloqueio existe.

Não

pg_stat_activity.datname

waiting_locktype

O tipo do objeto bloqueável: relation, extend, frozenid, page, tuple, transactionid, virtualxid, spectoken, object, userlock, advisory ou applytransaction.

Não

pg_locks.locktype

is_fastpath

O valor será verdadeiro se o bloqueio foi obtido pelo caminho rápido e falso se obtido da tabela de bloqueio principal.

Não

pg_locks.fastpath

Para obter mais informações sobre os valores nas visualizações pg_stat_activity e pg_locks, consulte os tópicos a seguir na documentação do PostgreSQL.