数据库参数调优
目的
通过调整数据库的参数配置,可以有效提升服务器性能。
方法
按照如下参数修改数据库参数,默认配置文件路径为“/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
参数名称 |
参数含义 |
优化建议 |
---|---|---|
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 |
设置两次系统自动清理操作之间的间隔时间。 |
- |