gpt4 book ai didi

sql - Postgresql:Autovacuum 分区表

转载 作者:行者123 更新时间:2023-12-02 18:31:35 32 4
gpt4 key购买 nike

我们有一个非常大的表,被划分为每月表。我们没有在 postgresql.conf 文件中设置 autovacuum 参数,因此默认情况下使用默认参数。

过去几个月的表table_201404、table_201403一旦通过就不会被写入或更新/删除,仅读取历史数据。为什么我们注意到这些表上运行着 autovacuum 进程?是因为它们是主分区的一部分并且 PostgreSQL 将这些表视为一个分区吗?

我们正在考虑将这些过去的表的 autovacuum_enabled 设置为关闭,但我想首先咨询 Stackoverflow 的智慧。

谢谢大家...

最佳答案

即使是只读表也需要每 20 亿个事务清理一次以进行回绕,并且在默认设置下每 1.5 亿个事务需要清理一次以进行回绕。

每行存储的事务 ID 是 32 位,因此它们最终会回绕。为了防止这引起问题,任何非常旧的 transactionID 都必须替换为一个神奇的值,该值意味着“比所有其他 ID 更旧”。因此必须扫描该表才能进行替换。如果表永远不会改变,最终每个事务 ID 都将被替换为神奇值,并且从概念上讲,该表不再需要被扫描。但这个事实并没有存储在任何地方,因此仍然需要时不时地扫描表,以便系统可以观察到它们仍然正常。幸运的是,扫描是按顺序完成的,只需要读取,不需要写入,所以效率应该相当高。

整个事情可能会在 9.5 中重做,这样就不再需要扫描这样的表了。

关于sql - Postgresql:Autovacuum 分区表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23543141/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com