1

私は当初、PostgreSQLで同じカウントを与えると考えn_dead_tupていました。dead_tuple_countしかし、そうではないようです。私は違いが正確に何であるかをよく理解していません。

以下は私の観察です:

  1. 10k 行のテーブルを作成しました。
  2. 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
  1. テーブルの上を掃除機でいっぱいにしました。予想どおり、dead_tuple_count は 0 です。

SELECT dead_tuple_count FROM public.pgstattuple('public.vacuum_test');

 dead_tuple_count 
------------------
                0

しかしn_dead_tuppg_stat_all_tablesieから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ますか?

4

2 に答える 2

0

VACUUM FULLこれらの統計カウンターをリセットしないという点で、少しバグがあります。普通のVACUUM人はそうするでしょう。

于 2014-11-21T22:25:15.137 に答える