pg_stat_user_tables에서 n_live_tup 및 n_dead_tup의 의미는 무엇입니까


답변:


28

이 두 열은

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;

테이블의 라이브 및 데드 행 (튜플) 수를 나타냅니다. 설명서에서
해당 기능을 찾으십시오 .

데드 행은 삭제 된 행이며 나중에 INSERTs 또는 UPDATEs 의 새 행 (데이터가 아닌 공간)에 재사용됩니다 . 일부 데드 행 (또는 예약 된 여유 공간)은 동일한 데이터 페이지에서 공간을 효율적으로 재사용 할 수있는 HOT 업데이트 (힙 전용 튜플)에 특히 유용 할 수 있습니다. 더 많은 정보 :

또는 테이블에서 죽은 행을 제거 VACUUM FULL하거나 VACUUM운이 좋으면 일반 행을 제거 하거나 이에 따라 실제 테이블을 축소 할 수 있습니다.

행이 삭제되거나 업데이트 될 때마다 이전의 행 버전은 트랜잭션이 커밋 된 후 시작된 다른 모든 트랜잭션에서 볼 수 없게됩니다. 커밋되지 않은 오래된 트랜잭션이 더 이상 없으면 즉시 행이 완전히 종료됩니다. PostgreSQL의 MVCC 모델 이 동시성을 처리하는 데 필요 합니다.

이것들은 단지 통계 일뿐 입니다. 통계를 postgresql.conf자동으로 업데이트하려면 통계 수집을 활성화해야합니다 . track_counts하지만 기본적으로 켜져 있어야합니다. 통계는 즉시 업데이트되지 않습니다. 매뉴얼에서 그것에 대해 더 읽으십시오 .


힙 전용 튜플이란 무엇입니까? 발행 할 때 SELECT n_live_tup FROM pg_stat_user_tables WHEN relname = 'mytable';왜 0으로 표시됩니까? mytable6 개의 행이 있습니다.
Majid Azimi

@ MajidAzimi : 나는 내 대답에 약간을 추가했습니다.
Erwin Brandstetter

5
@MajidAzimi 당신은에서 슬라이드를 확인 MVCC 및 핫 대한 무리를 배우고 싶다면 PGCon'08에서 파반 Deolasee의 프리젠 테이션
dbenhur

@ dbenhur : 좋은 링크! 프레젠테이션은 매우 잘 이루어졌으며 이해하기 쉽습니다.
Erwin Brandstetter

@dbenhur 링크가 죽었을 것 같습니다.
Aryeh Leib Taurog
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.