PostgreSQL: Truques para o seu elefante #01

Vou começar uma série de dicas e truques para ensinar ao seu elefante!!

O primeiro episódio da série, será alguns comandos para ajudar na administração do seu banco da dados PostgreSQL.

Vou apresentar alguns comandos úteis baseados na View de Estatísticas Dinâmicas, a pg_stat_activity que exibe todas as Transações que foram iniciadas no Postgres.

Para maiores informações sobre a View, pode se consultar o manual do Postgres aqui.

 

Comando 1:

Este comando exibe todas as Transações que foram iniciadas no Postgres.

SELECT * FROM pg_stat_activity

 

Comando 2:

Este comando é o mesmo que o comando anterior apenas com o Count, usado para mostrar quantidade as Transacões no Postgres.

SELECT count(*) FROM pg_stat_activity

 

Comando 3:

Este comando mostra a quantidade de Transações Ativas no Postgres

SELECT count(*) FROM 
pg_stat_activity WHERE state IN ('idle in transaction', 'active')

 

Comando 4:

Este comando mostra todos os usuários logados no Postgres

SELECT distinct usename FROM pg_stat_activity

 

Comando 5:

Este comando é o mesmo que o comando anterior apenas com o Count, usado para mostrar quantidade usuários logados no Postgres.

SELECT count(distinct usename) FROM pg_stat_activity

 

Comando 6:

Este comando mostra os processos com a maior idade em segundos.

SELECT pid, max(EXTRACT(epoch FROM (now() - xact_start))) as age_sec
FROM pg_stat_activity 
WHERE state IN ('idle in transaction', 'active')
GROUP BY pid
ORDER BY 2 desc

 

Comando 7:

Este comando exibe todas as Transações Ativas que foram iniciadas no Postgres com o campo age_sec, que indica a idade do processo.

SELECT EXTRACT(epoch FROM (now() - xact_start)) as age_sec, * 
FROM pg_stat_activity WHERE state IN ('idle in transaction', 'active')

 

BÔNUS: Comando 8:

Este comando mostra os Locks no banco Postgres

SELECT * FROM pg_locks WHERE granted = false;

BÔNUS: Comando 9:

Este comando mostra os Locks bloqueantes, ou seja, que fazem com que os processos aguardem que o recurso seja liberado para ser acessado.

SELECT * FROM pg_locks WHERE granted = false;

BÔNUS: Comando 10:

Este comando é uma variação do anterior. Mais uma vez apenas com o Count para exibir a quantidade de Locks Blocantes.

SELECT count(*) FROM pg_locks WHERE granted = false;

 

 

Bom acho que é isso pessoal. Com esses comandos e pequenas variações podemos gerar outros que nos ajudem na administração do nosso Elefante!

Abraço e até a próxima!!

Sobre o Autor

Graduado em Engenharia da Computação pela Universidade do Vale do Paraíba(2006), MBA em Gestão de Projetos pela Fundação Getúlio Vargas(2010) e Mestrado em Engenharia e Tecnologias Espaciais na área de Engenharia e Gerenciamento de Sistemas Espaciais pelo INPE(2013). Possuí experiência na área de Ciência da Computação e Engenharia da Computação, com ênfase em Engenharia de Software, Sistemas bancos de dados e automação.
É um grande apaixonado por tecnologia e assuntos relacionados.

Deixe uma resposta

Seu endereço de email não será publicado.