PostgreSQL上激进的Autovacuum

PostgreSQL上激进的Autovacuum,第1张

概述我试图让PostgreSQL积极地自动清空我的数据库.我目前配置自动真空如下: > autovacuum_vacuum_cost_delay = 0#关闭基于成本的真空 > autovacuum_vacuum_cost_limit = 10000 #Max值 > autovacuum_vacuum_threshold = 50 #Default值 > autovacuum_vacuum_scale 我试图让Postgre@R_419_6983@积极地自动清空我的数据库.我目前配置自动真空如下:

> autovacuum_vacuum_cost_delay = 0#关闭基于成本的真空
> autovacuum_vacuum_cost_limit = 10000 #Max值
> autovacuum_vacuum_threshold = 50 #Default值
> autovacuum_vacuum_scale_factor = 0.2 #Default值

我注意到,当数据库没有负载时,自动真空只会启动,因此我会遇到死元组比实时元组多得多的情况.请参阅附带的屏幕截图以获取示例.其中一个表有23个实时元组,但有16845个死元组等待真空.那太疯狂了!

当测试运行完成并且数据库服务器空闲时,自动真空启动,这不是我想要的,因为每当死元组的数量超过20%的实时元组50时,我希望自动真空启动,因为数据库已经配置.服务器空闲时的自动真空对我来说是无用的,因为生产服务器预计会在一段持续时间内达到1000次更新/秒,这就是为什么即使服务器负载也需要自动真空运行的原因.

有什么我想念的吗?在服务器负载很重的情况下,如何强制自动真空运行?

更新

这可能是锁定问题吗?有问题的表是汇总表,通过后插入触发器填充.这些表在SHARE ROW EXCLUSIVE模式下被锁定,以防止并发写入同一行.

Eelke几乎肯定是正确的,你的锁定阻止autovacuum. autovacuum旨在故意让位于用户活动.如果这些表被锁定,autovacuum无法对它们进行真空吸尘.

然而,对于后代,我想给出超级激进的autovacuum的一组示例设置,因为你提供的设置并不完全如此.但请注意,使autovacuum更具攻击性不太可能解决您的问题.另请注意,默认的autovacuum设置基于使用DBT2运行超过200次测试运行,寻求最佳的设置组合,因此默认值应该被认为是好的,除非你有充分的理由不这么认为,或者除非你的数据库明显在外面olTP数据库的主流(例如,每秒获得10K更新的小型数据库,或3TB数据仓库).

首先,打开日志记录,以便检查autovacuum是否正在执行您认为的 *** 作:

log_autovacuum_min_duration = 0

然后让我们制作更多autovac工作者并让他们更频繁地检查表格:

autovacuum_max_workers = 6autovacuum_naptime = 15s

让我们降低自动真空和自动分析的阈值,以便更快触发:

autovacuum_vacuum_threshold = 25autovacuum_vacuum_scale_factor = 0.1autovacuum_analyze_threshold = 10autovacuum_analyze_scale_factor = 0.05

然后让我们使autovacuum更容易中断,因此它的完成速度更快,但代价是对并发用户活动产生更大的影响:

autovacuum_vacuum_cost_delay = 10msautovacuum_vacuum_cost_limit = 1000

这是针对一般攻击性autovacuum的完整程序,这可能适用于小型数据库获得非常高的更新率,但可能对并发用户活动产生太大影响.

另外,请注意autovacuum parameters can be adjusted per table,这对于需要调整autovacuum的行为几乎总是更好的答案.

但是,再一次,它不太可能解决您的真正问题.

总结

以上是内存溢出为你收集整理的PostgreSQL上激进的Autovacuum全部内容,希望文章能够帮你解决PostgreSQL上激进的Autovacuum所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/1167131.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-01
下一篇2022-06-01

发表评论

登录后才能评论

评论列表(0条)

    保存