ztao1987
发布于

auto-vacuum造成oushudb性能下降

元数据使用的 MVCC,所用的事务 ID 是 uint32_t,所以在一段时间后会发生回环,为确保数据可见性,需要 vacuum freeze。
vacuum freeze 做的是将所有 tuple 的 xmin 改为特定的 FrozenTransactionId,保证其永久可见。目前 vacuum freeze 拿的是 ShareUpdateExclusiveLock,reindex table 拿的是 ShareLock。

如果后台 auto-vacuum 在跑,可以发 sigterm 信号终止 vaccum 进程,注意不能是 sigkill

select 'vacuum freeze '||pn.nspname||'.'||pc.relname||';' 
	from pg_class pc,pg_namespace pn
where pc.relnamespace=pn.oid and 
	pc.relkind='r' and pc.relstorage!='x'  and  age(relfrozenxid)> 100000000
order by age(relfrozenxid) desc limit 100;
评论
    test