回答:
これらの2つの列は、
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更新(ヒープのみのタプル)に特に役立ちます。HOTの詳細:
または、テーブルの無効VACUUM FULL
な行(またはVACUUM
幸運な場合はプレーン)または同様の操作によって削除され、それに応じて物理テーブルが縮小されます。
行が削除または更新されるたびに、古い行バージョンは、トランザクションがコミットされた後に開始する他のすべてのトランザクションから見えなくなります。コミットされていない古いトランザクションがなくなるとすぐに、行は完全に無効になります。これは、PostgreSQLのMVCCモデルが並行性を処理するために必要です。
これらは単なる統計です。統計情報をpostgresql.conf
自動的に更新する場合は、統計情報の収集を有効にする必要があります。track_counts
ただし、デフォルトではオンになっているはずです。統計は瞬時に更新されないことに注意してください。詳細については、マニュアルを参照してください。
SELECT n_live_tup FROM pg_stat_user_tables WHEN relname = 'mytable';
なぜそれはゼロを示していますか?mytable
6行あります。