本文共 1330 字,大约阅读时间需要 4 分钟。
PostgreSQL Autovacuum 参数说明
PostgreSQL 提供了丰富的 autovacuum 参数用于自动清理旧数据和维护数据库性能。本文将详细介绍这些参数的作用和默认值。
1. autovacuum
- 默认值:
on - 作用:启用 autovacuum 机制。特别是在需要冻结 xid(事务 ID)时,尽管 autovacuum 被关闭,PostgreSQL 还会进行 vacuum 操作。
2. log_autovacuum_min_duration
- 默认值:
-1 - 作用:记录在规定时长内未完成的 vacuum 操作。默认值
-1 表示禁用,0 表示所有操作都记录,>0 表示只记录超过指定时间的操作。
3. autovacuum_max_workers
- 默认值:
3 - 作用:限制 autovacuum 运行的最大线程数。建议根据 CPU 核心数和 I/O 情况调整,避免因线程过多导致内存不足。
4. autovacuum_naptime
- 默认值:
1(分钟) - 作用:指定两次 autovacuum 运行的间隔时间。适当延长此时间可以减少数据库负载。
5. autovacuum_vacuum_threshold
- 默认值:
50(行) - 作用:在达到该行数之前,不会触发 vacuum 操作。适合控制 vacuum 操作频率。
6. autovacuum_analyze_threshold
- 默认值:
50(行) - 作用:在达到该行数之前,不会触发 analyze 操作。分析操作有助于优化 SQL 语句计划。
7. autovacuum_vacuum_scale_factor
- 默认值:
0.2 - 作用:在表数据大小的此比例之前,不会触发 vacuum 操作。避免因频繁 vacuum 操作导致 XLOG 操作过多。
8. autovacuum_analyze_scale_factor
- 默认值:
0.1 - 作用:在表数据大小的此比例之前,不会触发 analyze 操作。分析操作有助于生成更精准的查询计划。
9. autovacuum_freeze_max_age
- 默认值:
200000000(XID) - 作用:在达到此 XID 年龄限制之前,不会强制执行 vacuum 操作。
10. autovacuum_multixact_freeze_max_age
- 默认值:
400000000(多事务ID) - 作用:在达到此多事务 ID 年龄限制之前,不会强制执行 vacuum 操作。
11. autovacuum_vacuum_cost_delay
- 默认值:
20(毫秒) - 作用:指定 autovacuum 运行的延迟时间。如果超过该值,会进入低优先级任务队列。
12. autovacuum_vacuum_cost_limit
- 默认值:
-1 - 作用:指定 autovacuum 运行的时间限制。如果达到限制,会进入低优先级任务队列。
13. autovacuum_vacuum_cost_limit
- 默认值:
-1 - 作用:指定 autovacuum 运行的时间限制。如果达到限制,会进入低优先级任务队列。
这些参数可以根据具体需求进行调整,以优化数据库性能和维护规律。
转载地址:http://mpxfk.baihongyu.com/