【问题标题】:VACUUMs executed in parallelVACUUM 并行执行
【发布时间】:2020-08-20 06:18:03
【问题描述】:

在我的应用程序 n 中,微服务在 m 个节点上运行。每个微服务都有自己的数据库,负责不定期发出VACUUM ANALYZE

由于这个例行作业的调度对于每个微服务都是相同的,所以在我的幼稚实现中,我有 m 个相同微服务的实例同时执行VACUUM ANALYZE 命令。

这会造成问题吗?

我猜不是,因为 PostgreSQL 会检测并行调用并优雅地处理这种情况。但我想确定一下。

【问题讨论】:

    标签: postgresql postgresql-9.6 vacuum


    【解决方案1】:

    不,您最终可能会以这种方式同时运行许多 VACUUM 进程,这可能不利于整体性能。

    更好的解决方案是让 autovacuum 处理这个问题。 autovacuum_max_workers 参数限制了单个 PostgreSQL 集群中可以同时运行的 autovacuum worker 的数量。

    适当地调整 autovacuum,然后它应该尽可能快地运行。

    【讨论】:

    • Autovacuum 目前不是一个立竿见影的解决方案,因为我们的访问模式似乎禁止成功的 autovacuum 运行。我完全可以理解,为什么有人会将此视为配置问题,因为 autovacuum 显然没有配置为足够激进。然而,夜间例行真空吸尘器具有以下优点: * 无需配置数据库,不会干扰我们客户的使用模式,同时提供
    猜你喜欢
    • 2018-04-09
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    • 2020-03-06
    • 1970-01-01
    相关资源
    最近更新 更多