首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >postgres自动真空重试机构

postgres自动真空重试机构
EN

Stack Overflow用户
提问于 2022-07-09 21:12:40
回答 1查看 30关注 0票数 0

在postgres中,当自动真空运行时,由于某种原因,它可以执行自动真空--例如,当设置了hot_standby_feedback时,在备用状态下有长时间运行的查询。例如,tab1已经更新,它触发了自动真空,同时在备用状态下运行一个长时间运行的查询,并将此信息发送到主服务器,这将跳过tab1上的真空。

自从自动吸尘器被跳过tab1,什么时候自动真空又在桌子上运行?否则,它将不会再次运行自动真空,我们将需要手动运行真空在那个桌子上。基本上,自动真空是否会重新尝试第一次不能真空的桌子上的自动吸尘器?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-09 22:34:53

由于hot_standby_feedback,自动真空不会被跳过。它仍然在运行,如果不能删除任何行,它可能无法完成任何任务。如果是这样的话,那么pg_stat_all_tables.n_dead_tup就不会减少,这意味着下一次数据库被评估为自动空分时,该表可能会再次自动空出,因为使它符合条件的状态没有改变。在空闲的系统上,这种情况每隔一次就会发生一次,不管扫描表中不可见的部分需要多长时间,然后再加到autovacuum_naptime的下一个增量。

这可能是个好主意(虽然用例范围很窄,我对此表示怀疑),可以抑制表的重复自动空分,直到地平线已经深入到值得这样做为止,但目前还没有这样做的代码。

请注意,这与插入驱动的自空空间不同。在那里,n_ins_since_vacuum确实会被重置,即使没有一个元组被标记为所有可见的。这样,真空将不会再次运行,直到桌子越过其他门槛,以使它符合条件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72924664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档