高删除/更新率下的PostgreSQL11空间重用
我们正在为我们的产品评估PostgreSQL 11.1。 拥有每秒4251次更新、每秒约1000次删除、每秒约3221次插入、每天10亿个事务的系统,我们面临的挑战是PostgreSQL无法重用其(删除/更新)空间,表的大小不断增加 我们配置了积极的自动真空设置,以避免环绕情况。还尝试添加定期执行的高删除/更新率下的PostgreSQL11空间重用,postgresql,autovacuum,Postgresql,Autovacuum,我们正在为我们的产品评估PostgreSQL 11.1。 拥有每秒4251次更新、每秒约1000次删除、每秒约3221次插入、每天10亿个事务的系统,我们面临的挑战是PostgreSQL无法重用其(删除/更新)空间,表的大小不断增加 我们配置了积极的自动真空设置,以避免环绕情况。还尝试添加定期执行的真空分析和真空– 而且仍然没有空间再利用。(只有vacuum-full或pg_-repack向操作系统释放空间–但这不是重复使用。) 以下是我们的真空设置: autovacuum
真空分析
和真空
–
而且仍然没有空间再利用。(只有vacuum-full
或pg_-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来说尤其困难
- 您应该将该表的
设置为0autovacuum\u vacuum\u cost\u delay
- 将
和autovacuum\u max\u workers
重置回默认值autovacuum\u naptime
- 将
和autovacuum\u vacuum\u scale\u factor
重置为默认值或稍低的值autovacuum\u analyze\u scale\u factor
- 确保多次更新的属性不是任何索引的一部分
- 创建小于100的
表格,比如70fillfactor
真空
和更新索引的需要
检查
pg\u stat\u us-er\u表的n\u tup\u hot\u upd
列,看看它是否有效。嗨,劳伦兹,谢谢你的回答。当表行快速增长且比例为总行的百分比且“阈值”为固定数字时,取消“缩放因子”并使用“阈值”是否有意义?谢谢艾莉莎,这的确是一个有用的选择。