Qual é o significado de n_live_tup
e n_dead_tup
em pg_stat_user_tables
ou pgstattuple
?
Qual é o significado de n_live_tup
e n_dead_tup
em pg_stat_user_tables
ou pgstattuple
?
Respostas:
Essas duas colunas são o resultado de
SELECT pg_stat_get_live_tuples(c.oid) AS n_live_tup
, pg_stat_get_dead_tuples(c.oid) AS n_dead_tup
FROM pg_class c;
Representando o número de linhas ativas e mortas (tuplas) na tabela.
Encontre essas funções no manual .
Linhas inativas são linhas excluídas que posteriormente serão reutilizadas para novas linhas de INSERT
s ou UPDATE
s (o espaço, não os dados). Algumas linhas inativas (ou espaço livre reservado) podem ser particularmente úteis para atualizações HOT (tuplas somente de heap) que podem reutilizar o espaço na mesma página de dados com eficiência. Mais sobre o HOT:
Ou linhas inativas podem ser removidas por VACUUM FULL
(ou simples, VACUUM
se tiver sorte) ou operações similares na tabela, reduzindo assim a tabela física de acordo.
Sempre que uma linha é excluída ou atualizada, a versão antiga da linha fica invisível para todas as outras transações iniciadas após a confirmação da transação. A linha está completamente inativa assim que não houver mais transações antigas não confirmadas. Isso é necessário para o modelo MVCC do PostgreSQL para lidar com a simultaneidade.
Essas são apenas estatísticas . Você precisa ativar a coleta de estatísticas postgresql.conf
se quiser que elas sejam atualizadas automaticamente. track_counts
deve estar ativado por padrão, no entanto. Lembre-se de que as estatísticas não são atualizadas instantaneamente. Leia mais sobre isso no manual .
SELECT n_live_tup FROM pg_stat_user_tables WHEN relname = 'mytable';
Por que mostra zero?mytable
tem 6 linhas.