有人能解释一下 autovacuum_naptime 参数吗?

5

我已经阅读了官方的解释,但仍然无法很好地理解这个参数。能否有人解释一下 autovacuum_naptime 参数?非常感谢!


1
“nap”这个词的意思是“睡觉”。这有帮助吗?如果没有,你遇到了什么问题?你知道吸尘是用来做什么的,以及为什么自动化地进行吸尘很有用吗?文档的哪个部分需要更多的解释? - Mark Byers
是的,我在某种程度上了解 PG 的自动清理进程,就像你说的那样。起初,我不理解“nap”这个词。 - francs
2个回答

3
这是postgresql在自动清理时等待的最短时间。
例如,如果您保留默认值1分钟,则在上一个清理完成后至少有1分钟没有清理。
此时间针对每个数据库,postgresql会尽可能运行多个清理进程。因此,如果您有4个数据库且naptime值为1分钟,则在新数据库中每20秒将运行一次清理进程。
希望我表述清楚,如有不明白的地方,请随时询问。

这是真的吗?假设您有4个数据库,并且有一个需要进行vacuum操作的大表,而20秒不足够完成,那么会发生什么情况? - francs
每个vacuum都在自己的进程中完成。因此,“vacuum manager”可能会启动另一个进程来清理其他表。但是,很可能有某种机制来避免对数据库造成过大的负载,因此Postgres也可能会等待更长时间。 - krtek
给Krtek:恐怕我不同意你的第二点。假设您有4个数据库,并且假设由于4个数据库中的数据更改很少,因此无需执行vacuum作业,我认为每个数据库中的vacuum不会每20秒运行一次,而应该是空闲状态。 - francs
@francs,根据文档,“发射器会在时间上分配工作,每隔autovacuum_naptime秒尝试在每个数据库中启动一个工作进程。(因此,如果安装了N个数据库,则每隔autovacuum_naptime / N秒将启动一个新的工作进程。)”http://www.postgresql.org/docs/9.0/static/routine-vacuuming.html#AUTOVACUUM 对我来说,"launcher(发射器)"将尝试在每个数据库中每autovacuum_naptime启动一次自动清理(vacuum)操作,这一点非常清楚。 - krtek

2
这是自动清理运行之间的最短时间。有许多参数可以决定何时运行清理,但这个参数设置了一个最短的“不要立即执行”时间,以便您的数据库不会不断地运行清理操作。
否则,您可能会发现自己在不断地清理而没有真正的工作得到完成 :-)
有关所有参数的详细信息,请单击此处

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接