gpt4 book ai didi

postgresql - Postgres : Set fillfactor to 50?

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

我有一个按顺序填充一次的记录表,但随后每个 记录都会更新(它们的更新顺序和更新时间都是随机的)。这些更新不是热更新。考虑到这些事实,将此表的填充因子设置为 50 甚至小于 50 是否有任何优势?

最佳答案

好的,正如您在对问题的评论中提到的,您正在使用在每个事务中更新 1-10k 记录的事务对表进行更改。这是给 autovacuum 留下一些机会使其工作的正确方法。但是表的 fillfactor 并不是我要检查/更改的第一件事。 Fillfactor 可以帮助您加快该过程,但如果 autovacuum 不够积极,您很快就会得到非常臃肿的表和糟糕的性能。

因此,首先,我建议您控制表格的膨胀程度。有许多查询可以帮助您:

接下来,我会将 autovacuum 调整到比默认状态更积极的状态,像这样(即使您不需要在短时间内处理整个表,这通常是个好主意),像这样:

log_autovacuum_min_duration = 0
autovacuum_vacuum_scale_factor = 0.01
autovacuum_analyze_scale_factor = 0.05
autovacuum_naptime = 60
autovacuum_vacuum_cost_delay = 20

在使用 UPDATE 进行大量事务后,检查膨胀级别。

最后,是的,我会调整 fillfactor,但可能会调整到更高(更常见)的值,例如 80 或 90 – 在这里您需要做出一些预测,页面中 10% 或更多元组的概率是多少被单笔交易更新?如果机会非常高,请降低填充因子。但是您已经提到 UPDATE 中的行顺序是随机的,所以我会使用 80-90%。请记住,这里有一个明显的权衡:如果将 fillfactor 设置为 50,您的表将需要 2 倍以上的磁盘空间,并且所有操作自然会变慢。如果您想深入了解这个问题,我建议使用相同的数据创建 21 个填充因子为 50..100 的表,并使用 pgbench 测试 UPDATE TPS。

关于postgresql - Postgres : Set fillfactor to 50?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45087790/

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