为什么在postgresql中template0 DB的事务期限会增加
为什么template0 DB的事务期限会增加,而它从未被使用过为什么在postgresql中template0 DB的事务期限会增加,postgresql,postgresql-11,postgresql-12,enterprisedb,Postgresql,Postgresql 11,Postgresql 12,Enterprisedb,为什么template0 DB的事务期限会增加,而它从未被使用过 datname | age | ----------------------+-----------+ template0 | 192232070 每个数据库在其pg_数据库条目中都有一个datfrozenxid。这与数据库中所有表的pg_类项的最小relfrozenxid相同 每当VACUUM冻结表中的元组时,它都可以推进这些列 没有必要定期抽真空模板0。但是,即使
datname | age |
----------------------+-----------+
template0 | 192232070
每个数据库在其
pg_数据库
条目中都有一个datfrozenxid
。这与数据库中所有表的pg_类
项的最小relfrozenxid
相同
每当VACUUM
冻结表中的元组时,它都可以推进这些列
没有必要定期抽真空模板0
。但是,即使在该数据库中,只要表的relfrozenxid
比autovacuum\u freeze\u max\u age
旧,表也会收到反环绕自动真空运行。这将很快完成:PostgreSQL将在可见性图中看到所有页面都“全部冻结”,并前进relfrozenxid
这不是真正的问题,因此没有人认为有必要对其进行更改或优化。谢谢。某种程度上解释了这一点,但当它用于template0时,它是非常具有欺骗性的。如果我在这里错了,请纠正我的错误,因此理想情况下,无论数据库
template0、template1、postgres
-默认数据库中发生的事务为零,这些数据库的此值都将根据用户数据库增加。当autovacuum启动时,template1和postgres DB可能/会将其刷新到一个较低的数字,但由于template0仅在autovacuum\u freeze\u max\u age
值时自动抽真空,因此它将继续增长datfrozenxid
也将对template0
进行升级,但您是对的,它只会在反环绕真空期间被推进,这是autovacuum在template0上工作的唯一时间(只能立即得出结论,没有什么可做的)。请注意,增长的不是datfrozenxid
,而是当前事务ID。