Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Monitorando sessões usando o pg_stat_activity no PostgreSQL

O ‘pg_stat_activity’ é uma das views do PostgreSQL a ser usada quando se trata de monitoramento de sessões e diagnóstico.  Fornece Ela fornece informações das atividades correntes no banco de dados. Ela mostra , mostrando uma linha por sessão ou conexão com detalhes como o estado da consulta, o tempo de início , e a consulta atual.

Informações
titleInformações complementares

Esta documentação tem como objetivo auxiliar administradores e desenvolvedores a monitorar e diagnosticar atividades no banco de dados PostgreSQL. Caso tome uma decisão com base nas informações extraídas, proceda com cautela. Certifique-se de manter backups atualizados de seu ambiente.

Links de referência: PostgreSQL: MonitoramentoPostgreSQL: pg_stat_activity viewPostgreSQL: Operadores de data e hora

Como utilizar a query pg_stat_activity ?

Para obter informações sobre todas as sessões correntesatualmente sendo executadas, você pode executar a seguinte consulta:

Bloco de código
languagesql
SELECT * FROM pg_stat_activity;

Filtros que pode utilizar para ordenar os resultados para facilitar a análise.Para facilitar sua análise, você pode filtrar pelos seguintes campos no lugar do ( * ) asterisco:

Campos úteis e suas descrições

datid e datname

...

ID e nome do banco de dados ao qual a sessão está conectada, respectivamente.
pid

...

ID do processo do sistema operacional associado à sessão.

usesysid e usename

...

ID e nome do usuário do banco de dados.
application_name

...

Nome da aplicação que iniciou a sessão.
client_addr

...

Endereço IP do cliente.
state

...

Estado atual da sessão, como 'active', 'idle', 'idle in transaction' etc.
query_start

...

Timestamp de quando a consulta atual foi iniciada.
query

...

Texto da última consulta executada ou atualmente em execução pela sessão.

Exemplos de uso da view pg_stat_activity

Identificando sessões inativas

Conexões "idle in transaction" podem ser problemáticas, pois indicam transações que foram iniciadas, mas ainda não foram confirmadas nem revertidas:

Bloco de código
languagesql
SELECT * FROM pg_stat_activity WHERE state = 'idle in transaction';

Identificando consultas demoradas

Para encontrar consultas que estão sendo executadas há mais de 5 minutos, por exemplo, você pode usar:

Bloco de código
languagesql
SELECT * FROM pg_stat_activity

...


WHERE state = 'active' 
AND now() - query_start > interval '5 minutes';
Dica

Na última linha da consulta, é realizada uma operação para calcular a diferença entre o horário atual e o horário de início da query. Em caso de dúvidas relacionadas à operações de data e hora no PostgreSQL, consulte a documentação oficial.

Identificando sessões ativas

Consultando sessões em estado ativas, ou seja, sessões que estão executando uma query.

Bloco de código
languagesql
SELECT * FROM pg_stat_activity WHERE state = 'active';

Identificando sessões que estão bloqueadas por outras

SELECT

Bloco de código
languagesql
SELECT
  blocking

...

.pid AS blocking_pid,

...


  blocking.query AS blocking_query,

...


  blocked.pid AS blocked_pid,

...


  blocked.query AS blocked_query

...

FROM

...


FROM
  pg_stat_activity AS blocked

...

JOIN

...


JOIN
  pg_stat_activity AS blocking ON blocked.waiting_pid = blocking.pid

...


WHERE

...


  blocked.wait_event IS NOT NULL;
Dica
titleConclusão

A view pg_stat_activity é uma ferramenta para administradores e desenvolvedores de banco de dados que desejam monitorar e diagnosticar atividades no PostgreSQL. Com ela, você pode identificar rapidamente sessões inativas, consultas demoradas e até intervir quando necessário.

Como sempre, ao trabalhar com operações que podem impactar a disponibilidade ou integridade dos dados, é essencial proceder com cautela e ter backups atualizados.

...

Fonte: 

https://www.postgresql.org/docs/9.4/monitoring.html

...