Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
高删除/更新率下的PostgreSQL11空间重用_Postgresql_Autovacuum - Fatal编程技术网

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

高删除/更新率下的PostgreSQL11空间重用,postgresql,autovacuum,Postgresql,Autovacuum,我们正在为我们的产品评估PostgreSQL 11.1。 拥有每秒4251次更新、每秒约1000次删除、每秒约3221次插入、每天10亿个事务的系统,我们面临的挑战是PostgreSQL无法重用其(删除/更新)空间,表的大小不断增加 我们配置了积极的自动真空设置,以避免环绕情况。还尝试添加定期执行的真空分析和真空– 而且仍然没有空间再利用。(只有vacuum-full或pg_-repack向操作系统释放空间–但这不是重复使用。) 以下是我们的真空设置: autovacuum

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

我们配置了积极的自动真空设置,以避免环绕情况。还尝试添加定期执行的
真空分析
真空
– 而且仍然没有空间再利用。(只有
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来说尤其困难

  • 您应该将该表的
    autovacuum\u vacuum\u cost\u delay
    设置为0

  • autovacuum\u max\u workers
    autovacuum\u naptime
    重置回默认值

  • autovacuum\u vacuum\u scale\u factor
    autovacuum\u analyze\u scale\u factor
    重置为默认值或稍低的值

您的问题并不是自动吸尘器运行不够频繁,而是速度太慢,无法跟上

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

  • 确保多次更新的属性不是任何索引的一部分

  • 创建小于100的
    fillfactor
    表格,比如70

热更新通常避免了
真空
和更新索引的需要


检查
pg\u stat\u us-er\u表的
n\u tup\u hot\u upd
列,看看它是否有效。

嗨,劳伦兹,谢谢你的回答。当表行快速增长且比例为总行的百分比且“阈值”为固定数字时,取消“缩放因子”并使用“阈值”是否有意义?谢谢艾莉莎,这的确是一个有用的选择。