Qual é o significado de n_live_tup e n_dead_tup em pg_stat_user_tables

20

Qual é o significado de n_live_tupe n_dead_tupem pg_stat_user_tablesou pgstattuple?

Majid Azimi
fonte

Respostas:

28

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 INSERTs ou UPDATEs (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, VACUUMse 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.confse quiser que elas sejam atualizadas automaticamente. track_countsdeve 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 .

Erwin Brandstetter
fonte
O que são tuplas somente de pilha? Quando emito SELECT n_live_tup FROM pg_stat_user_tables WHEN relname = 'mytable';Por que mostra zero? mytabletem 6 linhas.
Majid Azimi
@MajidAzimi: Eu adicionei um pouco à minha resposta.
Erwin Brandstetter
5
@MajidAzimi Se você quiser saber mais sobre o MVCC e o HoT, confira os slides da apresentação
dbenhur
@dbenhur: Bom link! A apresentação é muito bem feita e fácil de entender.
Erwin Brandstetter 23/03
@dbenhur O link parece estar morto agora.
Aryeh Leib Taurog