我最初认为n_dead_tup
和dead_tuple_count
在 PostgreSQL 中给出相同的计数。但他们似乎并非如此。我不太明白到底有什么区别。
以下是我的观察:
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
Run Code Online (Sandbox Code Playgroud)
SELECT dead_tuple_count FROM public.pgstattuple('public.vacuum_test');
dead_tuple_count
------------------
0
Run Code Online (Sandbox Code Playgroud)
但从ien_dead_tup
来看仍然是 10002:pg_stat_all_tables
pg_stat_get_dead_tuples('18466')
select * from pg_stat_get_dead_tuples('18466');
pg_stat_get_dead_tuples
-------------------------
10002
Run Code Online (Sandbox Code Playgroud)
我多次重复此过程,并观察到n_dead_tup
每次更新后更新的元组数量都会添加到统计数据中。
那么VACUUM
这里到底在做什么呢?n_dead_tup
和和有什么区别dead_tuple_count
?