(文档)第119讲:参数调优利器—pgtune 使用技巧
Pgtune是一款PostgreSQL配置优化工具,能自动调整postgresql.conf参数以匹配服务器硬件性能。它通过分析系统内存、工作负载类型和连接数,优化共享内存、缓存等关键设置,提升数据库性能30%以上。安装简单,支持Python环境,提供多种数据库类型选项(DW/OLTP/Web等)。使用时可指定输入/输出配置文件、内存大小等参数,为不同场景生成优化配置。典型命令示例:为16GB内存
目标
• pgtune概述
• pgtune安装
• pgtune应用案例
pgtune概述
Pgtune是一款强大的PostgreSQL配置向导工具,它能将默认的postgresql.conf配置文件优化为匹配服务器硬件性能的最佳设置。无论你是数据库管理员还是开发人员,使用Pgtune都能轻松提升PostgreSQL数据库的运行效率。
PostgreSQL默认配置是为了兼容性而设计的"保守设置",无法充分发挥服务器硬件性能。Pgtune通过分析你的服务器内存大小和工作负载类型,自动生成优化后的配置参数,让数据库性能提升30%以上!
pgtune工作原理
Pgtune通过以下步骤优化PostgreSQL配置:
• 分析现有postgresql.conf文件
• 根据系统内存和指定工作负载计算最佳参数
• 生成新的配置文件,保留原始注释和未修改参数
核心优化的参数包括:
• 共享内存设置
• 连接池大小
• 缓存配置
• 并行查询设置
• WAL(预写日志)优化
pgtune安装
1、下载
git clone https://gitcode.com/gh_mirrors/pgt/pgtune
2、源码安装(适用于所有系统)
Pgtune是纯Python脚本,无需编译,只需将项目克隆到本地即可。
3、修改python脚本pgtune
由于默认的脚本是按照pyton2.X版本语法书写,如果运行环境是python3.X版本的,需要修改语法,比如print命令,3.X版本的需要把print xxx修改为print (xxx)。
(安装时注意pg_config命令,系统有自带改命令,需要通过设置PATH变量,让系统使用pg自带的pg_config命令)
pgtune语法介绍
Pgtune语法如下所示:
-i or --input-config : 指定当前postgresql.conf文件.
-o or --output-config : 指定输入的新的postgresql.conf文件.
-M or --memory: 使用此参数指定总系统内存。如果未指定,pgtune将尝试检测内存大小.
-T or --type : 指定数据库类型. 可选的类型为: DW, OLTP, Web, Mixed, Desktop.
-P or --platform : 指定平台,默认为运行程序的平台。有效选项包括:Windows, Linux, and Darwin (Mac OS X).
-c or --connections: 指定预期的最大连接数。如果未指定,则取决于数据库类型.
-S or --settings: 设置数据文件所在的目录。默认为运行脚本的目录。RPM软件包包含一个补丁,用于使用这些文件安装到的正确位置.
通过命令行参数可以精确控制优化方向:

支持不同数据库类型参数调整:
DW:数据仓库(分析型 workload)
OLTP:联机事务处理(写入密集型)
Web:Web应用(读写均衡)
Mixed:混合工作负载
Desktop:桌面应用(轻量级)
pgtune使用技巧
• 对PostgreSQL参数配置进行优化
• 根据原来配置文件生成新的配置文件:
• ./pgtune -i $PGDATA/postgresql.conf -o $PGDATA/postgresql.conf.pgtune
• 为16GB内存的Linux服务器优化OLTP类型数据库:
• ./pgtune -i postgresql.conf -o postgresql.conf.optimized \
• -M 16GB -T OLTP -P Linux -c 150
pgtune优化后的结果
# pgtune for version 8.4 run on 2026-03-06
# Based on 12136664.0 KB RAM, platform Linux, 100 clients and mixed workload
shared_buffers = 2816.0MB
effective_cache_size = 8.0GB
work_mem = 56.0MB
maintenance_work_mem = 704.0MB
checkpoint_segments = 32
checkpoint_completion_target = 0.9
wal_buffers = 16.0MB
default_statistics_target = 100
更多推荐
所有评论(0)