---
title: 数据库参数调优
description: "通过调整数据库的参数配置，可以有效提升服务器性能。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/ecosystemEnable/PostgreSQL/kunpengdbstune_05_0027.html
sourcePath: /source/zh/kunpengdbs/ecosystemEnable/PostgreSQL/kunpengdbstune_05_0027.html
indexId: fdc29f9e8e5c49bee807e722f05acff63835b36d08d0ac3becabaa8652b06c3576
---
# 数据库参数调优

#### 目的

通过调整数据库的参数配置，可以有效提升服务器性能。


#### 方法

按照如下参数修改数据库参数，默认配置文件路径为“/pgsql/postgresql.conf”，请根据实际情况修改。

```
listen_addresses = '*'
bgwriter_delay = 10ms
bgwriter_lru_maxpages = 800
max_wal_size = 20GB
min_wal_size = 1GB
checkpoint_completion_target = 0.9
max_connections = 4096
checkpoint_timeout = 60min
full_page_writes = off
max_files_per_process = 100000
max_prepared_transactions = 2048
shared_buffers = 150GB
wal_buffers = 1GB
work_mem = 1GB
log_min_messages = FATAL
synchronous_commit = on
fsync = on
maintenance_work_mem = 2GB
vacuum_cost_limit = 10000
autovacuum = on
autovacuum_max_workers = 5
autovacuum_naptime = 20s
autovacuum_vacuum_scale_factor = 0.002
autovacuum_analyze_scale_factor = 0.001
```


**表1 数据库调优参数**

| 参数名称 | 参数含义 | 优化建议 |
| --- | --- | --- |
| max\_connections | 允许客户端的最大并发连接数目。 | 可根据实际情况设置。 |
| bgwriter\_delay | 后台写数据库进程的睡眠时间。 | 设置为最小10ms。 |
| bgwriter\_lru\_maxpages | 后台写数据库进程每次写脏数据块时，写到外部文件中的脏数据块的最大个数。 | \- |
| max\_wal\_size | 最大WAL x\_log文件大小。 | 设置稍大以免频繁checkpoint。 |
| checkpoint\_completion\_target | 表示checkpoint的完成时间要在两个checkpoint间隔时间的N%内完成。 | 设置长一点，避免对性能测试的影响。 |
| checkpoint\_timeout | 检查点周期。 | \- |
| full\_page\_writes | 在checkpoint之后在对页面的第一次写时将整个页面写到wal里面。 | 将“full\_page\_writes”设置为off时，表示仅将页面的修改部分写入磁盘，可以提高性能，但在系统崩溃时可能会增加数据损坏的风险。 在生产环境中，建议设置为on。 |
| shared\_buffers | 可以被PostgreSQL用于缓存数据的内存大小。 | 建议不超过物理内存60%，可根据实际情况调整。 |
| wal\_buffers | 日志缓存区的大小。 | \- |
| work\_mem | 数据库的排序操作和哈希表使用的内存缓冲区的大小。 | \- |
| log\_min\_messages | 控制写到数据库日志文件中的消息的级别。 | \- |
| fsync | 数据同步更新到磁盘。 | 默认打开，关闭会影响数据可靠性。 |
| synchronous\_commit | 同步提交日志。 | 默认打开，关闭会影响数据可靠性。 |
| maintenance\_work\_mem | 数据库的维护操作使用的内存空间的大小，如VACUUM、CREATE INDEX和ALTER TABLE ADD FOREIGN KEY等。 | \- |
| autovacuum\_max\_workers | 设置系统自动清理工作进程的最大数量。 | \- |
| autovacuum\_naptime | 设置两次系统自动清理操作之间的间隔时间。 | \- |
