私は当初、PostgreSQLで同じカウントを与えると考えn_dead_tup
ていました。dead_tuple_count
しかし、そうではないようです。私は違いが正確に何であるかをよく理解していません。
以下は私の観察です:
- 10k 行のテーブルを作成しました。
- 10k 行すべてを更新しました。今、私は10kの死んだタプルを持っています。
SELECT dead_tuple_count FROM public.pgstattuple('public.vacuum_test');
dead_tuple_count
------------------
10002
select * from pg_stat_get_dead_tuples('18466');
pg_stat_get_dead_tuples
-------------------------
10002
- テーブルの上を掃除機でいっぱいにしました。予想どおり、dead_tuple_count は 0 です。
SELECT dead_tuple_count FROM public.pgstattuple('public.vacuum_test');
dead_tuple_count
------------------
0
しかしn_dead_tup
、pg_stat_all_tables
ieからpg_stat_get_dead_tuples('18466')
はまだ 10002 です:
select * from pg_stat_get_dead_tuples('18466');
pg_stat_get_dead_tuples
-------------------------
10002
このプロセスを数回繰り返したところ、更新のn_dead_tup
たびに更新されたタプルの数が統計に追加されていることがわかりました。
では、ここで正確に何が行われているのVACUUM
でしょうか? n_dead_tup
とはどう違いdead_tuple_count
ますか?