gpt4 book ai didi

高删除/更新率下的 PostgreSQL11 空间重用

转载 作者:行者123 更新时间:2023-11-29 12:15:51 25 4
gpt4 key购买 nike

我们正在为我们的产品评估 PostgreSQL 11.1。拥有每秒 4251 次更新、每秒约 1000 次删除和每秒约 3221 次插入以及每天 10 亿个事务的系统,我们面临着 PostgreSQL 不重用其(删除/更新)空间并且表的大小不断增加的挑战.

我们配置了积极的 Autovacuum 设置以避免环绕情况。还尝试添加定期执行 vacuum analyzevacuum –而且仍然没有空间重用。 (只有 vacuum fullpg_repack 释放空间给操作系统——但这不是重用。)

以下是我们的真空设置:

autovacuum                          | on
vacuum_cost_limit | 6000
autovacuum_analyze_threshold | 50
autovacuum_vacuum_threshold | 50
autovacuum_vacuum_cost_delay | 5
autovacuum_max_workers | 32
autovacuum_freeze_max_age | 2000000
autovacuum_multixact_freeze_max_age | 2000000
vacuum_freeze_table_age | 20000
vacuum_multixact_freeze_table_age | 20000
vacuum_cost_page_dirty | 20
vacuum_freeze_min_age | 10000
vacuum_multixact_freeze_min_age | 10000
log_autovacuum_min_duration | 1000
autovacuum_naptime | 10
autovacuum_analyze_scale_factor | 0
autovacuum_vacuum_scale_factor | 0
vacuum_cleanup_index_scale_factor | 0
vacuum_cost_delay | 0
vacuum_defer_cleanup_age | 0
autovacuum_vacuum_cost_limit | -1
autovacuum_work_mem | -1

最佳答案

您对 PostgreSQL 的要求特别苛刻。

  • 您应该将该表的 autovacuum_vacuum_cost_delay 设置为 0。

  • autovacuum_max_workersautovacuum_naptime 重置为默认值。

  • autovacuum_vacuum_scale_factorautovacuum_analyze_scale_factor 重置为其默认值或稍低的值。

您的问题是不是 autovacuum 运行不够频繁,问题是它太慢而无法跟上。

即便如此,您可能也只能通过热更新来处理此工作负载:

  • 确保经常更新的属性是任何索引的一部分。

  • 创建 fillfactor 低于 100 的表,比如 70。

HOT 更新通常避免了对 VACUUM 和更新索引的需要。

检查 pg_stat_us-er_tablesn_tup_hot_upd 列,看看它是否有效。

关于高删除/更新率下的 PostgreSQL11 空间重用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54982072/

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