postgres postgresql estatisticas
Um dos processos iniciados pelo postmaster é o stats collector, ou coletor de estatísticas. Ele é responsável por agregar estatísticas geradas pelos backends e disponibilizá-las de volta aos backends, para serem usadas em otimizações de consultas e rotinas de manutenção, e para uso externo, como para monitoramento e inspeção do administrador.
Tais estatísticas incluem contadores de acesso a blocos e tuplas (configuração
track_counts
), número de tuplas vivas e mortas, tempos de acesso a disco
(configuração track_io_timing
), chamadas a funções (configuração
track_functions
), sobre o comando em execução em cada backend (configuração
track_activities
) e outras. Mas como a mensuração de cada uma dessas
estatísticas incute um custo de tempo ou outros recursos do servidor, elas são
configuráveis e algumas vêm desabilitadas por padrão.
O coletor de estatísticas comunica as estatísticas aos outros processos por
arquivos temporários em stats_temp_directory
, que pode ser montado em um
sistema de arquivos em memória. As estatísticas são persistidas entre reinícios
do serviço através dos objetos em pg_stat
. Quando o PostgreSQL passa por uma
recuperação (restauração de backup, replicação, início após parada immeditate…),
os contadores de estatística são zerados.
Existe uma grande variedade de visões de sistema que dão visibilidade às estatísticas e ao estado geral do sistema.
Cada visão tem um conjunto diferente de atributos, que é melhor consultado da documentação.
Algumas visões retornam sempre o estado atual do sistema, independentemente do estado da transação:
visão | descrição |
---|---|
pg_stat_activity | Estado dos processos de servidor, com uma linha por conexão estabelecida e uma linha por processo interno do PostgreSQL |
pg_stat_replication | Estado do envio da replicação |
pg_stat_wal_receiver | Estado do recebimento da replicação |
pg_stat_subscription | Estado das assinaturas de replicação física |
pg_stat_ssl | Estado das conexões por SSL |
pg_stat_gssapi | Estado das conexões por GSSAPI |
pg_stat_progress_analyze | Progresso de comandos ANALYZE e autoanalyzes |
pg_stat_progress_basebackup | Progresso de backups |
pg_stat_progress_cluster | Progresso de comandos CLUSTER e VACUUM FULL |
pg_stat_progress_create_index | Progresso de comandos CREATE INDEX e REINDEX |
pg_stat_progress_vacuum | Progresso de comandos VACUUM e autovacuums |
Outras retornam as estatísticas acumuladas pelo coletor ou pela transação atual, que podem apresentar uma diferença, dado que os processos não enviam dados ao coletor sob demanda ou em tempo real, mas sim quando estão para ter tempo ocioso:
visão | descrição |
---|---|
pg_stat_archiver | Estatísticas sobre o arquivador de WAL |
pg_stat_bgwriter | Estatísticas sobre o background writer |
pg_stat_database | Estatísticas sobre os bancos de dados |
pg_stat_database_conflicts | Estatísticas sobre transações canceladas por conflitos com réplicas |
pg_stat_{all,sys,user}_{tables,indexes} | Estatísticas sobre acessos a tabelas e índices, pré-filtradas para objetos de usuário (user), de sistema (sys) ou todos (all) |
pg_stat_xact_{all,sys,user}_{tables,indexes} | Estatísticas sobre acessos a tabelas e índices, pré-filtradas para objetos de usuário (user), de sistema (sys) ou todos (all), mas contabilizando também as estatísticas acumuladas pela transação atual, antes de serem enviadas ao coletor |
pg_statio_{all,sys,user}_{tables,indexes, sequences} | Estatísticas sobre padrões de acesso a disco (I/O) em tabelas, índices e sequências, pré-filtrados para objetos de usuário (user), de sistema (sys) ou todos (all) |
pg_stat_user_functions | Estatísticas sobre execuções de funções de usuário |
pg_stat_xact_user_functions | Estatísticas sobre execuções de funções de usuário, mas consultando apenas estatísticas acumuladas pela transação atual, antes de seren enviadas ao coletor |
Além das visões, diversas funções de sistema nos ajudam a inspecionar e a monitorar as estatísticas do PostgreSQL. Algumas das mais úteis são:
função | descriçao |
---|---|
pg_backend_pid() | Retorna o pid do backend tratando esta sessão |
pg_stat_get_activity(pid) | Retorna algumas das informações da visão pg_stat_activity |
pg_stat_reset() | Reseta as estatísticas do banco de dados atual |
pg_stat_reset_shared(text) | Reseta algumas estatísticas globais (como das visões do archiver e bgwriter) |
pg_stat_reset_single_table_counters(oid) | Reseta estatísticas de uma tabela |
pg_stat_reset_single_function_counters(oid) | Reseta estatísticas de uma função de usuário |