답변:
이 두 열은
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;
테이블의 라이브 및 데드 행 (튜플) 수를 나타냅니다. 설명서에서
해당 기능을 찾으십시오 .
데드 행은 삭제 된 행이며 나중에 INSERT
s 또는 UPDATE
s 의 새 행 (데이터가 아닌 공간)에 재사용됩니다 . 일부 데드 행 (또는 예약 된 여유 공간)은 동일한 데이터 페이지에서 공간을 효율적으로 재사용 할 수있는 HOT 업데이트 (힙 전용 튜플)에 특히 유용 할 수 있습니다. 더 많은 정보 :
또는 테이블에서 죽은 행을 제거 VACUUM FULL
하거나 VACUUM
운이 좋으면 일반 행을 제거 하거나 이에 따라 실제 테이블을 축소 할 수 있습니다.
행이 삭제되거나 업데이트 될 때마다 이전의 행 버전은 트랜잭션이 커밋 된 후 시작된 다른 모든 트랜잭션에서 볼 수 없게됩니다. 커밋되지 않은 오래된 트랜잭션이 더 이상 없으면 즉시 행이 완전히 종료됩니다. PostgreSQL의 MVCC 모델 이 동시성을 처리하는 데 필요 합니다.
이것들은 단지 통계 일뿐 입니다. 통계를 postgresql.conf
자동으로 업데이트하려면 통계 수집을 활성화해야합니다 . track_counts
하지만 기본적으로 켜져 있어야합니다. 통계는 즉시 업데이트되지 않습니다. 매뉴얼에서 그것에 대해 더 읽으십시오 .
SELECT n_live_tup FROM pg_stat_user_tables WHEN relname = 'mytable';
왜 0으로 표시됩니까?mytable
6 개의 행이 있습니다.