有没有一种好方法可以监控自上次自动清空以来对表的更新/删除次数?我试图找到更新不够频繁的表,以避免autovacuum (to prevent wraparound)
.
我正在考虑使用n_dead_tup
from pg_stat_all_tables
,但这是一个好主意/有更好的方法吗?
我正在使用 Postgres 9.6。
谢谢
有没有一种好方法可以监控自上次自动清空以来对表的更新/删除次数?我试图找到更新不够频繁的表,以避免autovacuum (to prevent wraparound)
.
我正在考虑使用n_dead_tup
from pg_stat_all_tables
,但这是一个好主意/有更好的方法吗?
我正在使用 Postgres 9.6。
谢谢
n_dead_tup
inpg_stat_all_tables
是监控它的完美方式,因为这是触发 autovacuum 的值。从 v13 开始,您还必须 watch
n_ins_since_vacuum
,因为那里的插入也会触发 autovacuum。通常,没有理由害怕防环绕式真空运行。PostgreSQL 9.6 引入了一项优化,允许此类
VACUUM
运行跳过仅包含冻结元组的页面。例外情况可能是一个几乎只接收插入的表。你可能会
VACUUM
在那里获得大规模的反环绕运行。避免这种情况的一种方法是大幅降低autovacuum_freeze_max_age
此类表,以便您VACUUM
更早、更频繁地在此处获得反环绕运行。PostgreSQL v13 已经消除了这个问题。