暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL重要配置参数

恩恩霸 2025-07-28
204

以下是 PostgreSQL 中除 WAL 外,**最常用且对性能影响显著的重要配置参数**,按用途分类整理如下:

---

### ✅ 内存相关参数
| 参数名 | 作用说明 | 推荐配置建议 |
|-----------------------|--------------------------------------------------------------------------|--------------|
| **shared_buffers** | 用于缓存数据块的共享内存大小 | 物理内存的 25%–40% |
| **work_mem** | 每个查询操作(排序、哈希等)可用的最大内存 | 从 4MB 起,按并发量调整,公式:`(总内存 * 0.25) / max_connections` |
| **maintenance_work_mem** | 用于 `VACUUM`、`CREATE INDEX` 等维护操作的内存 | 1GB–4GB |
| **effective_cache_size** | 告诉优化器操作系统可用的缓存大小,影响执行计划选择 | 系统内存的 70%–80% |
| **wal_buffers** | WAL 日志缓冲区大小,默认是 shared_buffers 的 1/32,可设为 16MB–64MB |

---

### ✅ 并发与连接参数
| 参数名 | 作用说明 | 推荐配置建议 |
|--------------------------|--------------------------------------|--------------|
| **max_connections** | 最大并发连接数,过高会浪费资源 | 建议不超过 500,配合连接池如 PgBouncer |
| **max_worker_processes** | 最大后台工作进程数(含并行、复制等) | 推荐等于或略大于 CPU 核心数 |
| **max_parallel_workers_per_gather** | 并行查询每个 Gather 节点最大并行进程数 | 推荐设为 CPU 核心数的一半 |

---

### ✅ 检查点与 WAL 参数
| 参数名 | 作用说明 | 推荐配置建议 |
|------------------------|------------------------------------------------|--------------|
| **checkpoint_timeout** | 自动检查点之间的时间间隔 | 10–15 分钟 |
| **max_wal_size** | WAL 日志最大保留量,影响写入吞吐与恢复时间 | 10GB–20GB |
| **wal_compression** | 是否启用 WAL 日志压缩,节省磁盘空间 | 建议开启 |

---

### ✅ 查询优化相关参数
| 参数名 | 作用说明 | 推荐配置建议 |
|----------------------|-------------------------------------------------|--------------|
| **random_page_cost** | 随机 I/O 成本系数,SSD 应降低该值以优化执行计划 | HDD 为 4.0,SSD 为 1.0–1.25 |
| **seq_page_cost** | 顺序 I/O 成本系数,通常保持默认 1.0 | 可微调 |
| **effective_io_concurrency** | 并发 I/O 请求数,SSD 可设为 200,HDD 设为 2 | 视磁盘类型调整 |

---

### ✅ 日志与监控参数
| 参数名 | 作用说明 | 推荐配置建议 |
|---------------------------|--------------------------------------|--------------|
| **log_min_duration_statement** | 记录执行时间超过阈值的 SQL,单位为毫秒 | 建议设为 1000ms 或按需调整 |
| **shared_preload_libraries** | 启动时加载的共享库,如 `pg_stat_statements` | 推荐启用用于性能分析 |

---

如需查看当前配置,可执行以下 SQL:
```sql
SELECT name, setting, unit FROM pg_settings WHERE name IN (
'shared_buffers', 'work_mem', 'max_connections', 'effective_cache_size',
'maintenance_work_mem', 'max_parallel_workers_per_gather', 'checkpoint_timeout'
);
```

这些参数是 PostgreSQL 性能调优的核心,建议根据 **实际硬件资源、并发量和业务负载** 逐步调整并测试效果。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论