🔗 作为《PostgreSQL诊断系列》的收官之作,今天我们系统梳理 postgresql.conf 中的核心参数,将前5篇的“诊断”转化为“调优”,打造一套生产环境专属的配置模板。

你是否:

  • 不知道哪些参数该调?
  • 害怕调错导致系统不稳定?
  • 想要一份“开箱即用”的优化配置?

本文将带你从内存、并发、写入、维护四大维度,逐个击破关键配置项,让你的PostgreSQL发挥最大性能。


🧩 配置调优四象限

我们将核心参数分为四类,对应数据库的四大系统:

维度类比核心目标
内存配置呼吸系统提高缓存命中率
并发连接神经系统支持高并发访问
写入与WAL心脏系统平衡持久性与性能
自动维护免疫系统预防膨胀与XID耗尽

1️⃣ 内存配置:提升“吸氧效率”

shared_buffers

  • 作用:PostgreSQL专用内存缓存
  • 建议值:物理内存的 25%(专用数据库服务器)
  • 示例:64GB内存 → shared_buffers = 16GB

work_mem

  • 作用:排序、哈希操作的内存
  • 风险:每个操作都可能使用,总内存 = work_mem × 并发数
  • 建议
    • OLTP系统:64MB ~ 256MB
    • OLAP系统:可设更高,但需监控总内存
    • 避免设为 1GB 以上

maintenance_work_mem

  • 作用:VACUUM、CREATE INDEX 等维护操作
  • 建议值1GB ~ 2GB(可临时调高)

💡 技巧:

在维护窗口临时调高:


SET maintenance_work_mem = '4GB';
VACUUM FULL;

2️⃣ 并发连接:支持“高流量”

max_connections

  • 作用:最大并发连接数
  • 陷阱:连接数越多,内存消耗越大(每个连接约 ~10MB
  • 建议
    • 使用连接池(如 PgBouncer)将实际连接控制在 100~300
    • 应用层连接可设为 1000+

max_worker_processes & max_parallel_workers

  • 作用:并行查询支持
  • 建议
    • max_worker_processes = 8
    • max_parallel_workers = 8
    • max_parallel_workers_per_gather = 4

🚀 收益:大表查询可提升数倍性能。


3️⃣ 写入与WAL:优化“心跳节奏”

checkpoint_timeout

  • 默认:5min
  • 建议10min ~ 30min(减少检查点频率)

checkpoint_completion_target

  • 默认:0.5
  • 建议0.8 ~ 0.9(让检查点更平滑)

max_wal_size

  • 默认:1GB
  • 建议2GB ~ 8GB(根据写入压力调整)
  • 目标:确保 pg_stat_bgwriter.checkpoints_req = 0

wal_buffers

  • 默认:-1(自动设置为 shared_buffers 的 1/32,最小 64kB)
  • 建议:通常无需修改,除非写入极频繁

4️⃣ 自动维护:构建“免疫系统”

autovacuum

  • 必须开启autovacuum = on

  • 调优参数

    
    # 频繁更新的小表
    autovacuum_vacuum_scale_factor = 0.05
    autovacuum_vacuum_threshold = 50# 大表
    autovacuum_analyze_scale_factor = 0.02
    autovacuum_analyze_threshold = 50# 并行处理
    autovacuum_max_workers = 5
    autovacuum_naptime = 10s

log_autovacuum_min_duration

  • 建议0(记录所有autovacuum动作,便于监控)

🛠️ 生产环境推荐配置模板


# ========== 内存 ==========
shared_buffers = 16GB
work_mem = 128MB
maintenance_work_mem = 2GB# ========== 连接 ==========
max_connections = 500
max_worker_processes = 8
max_parallel_workers = 8
max_parallel_workers_per_gather = 4# ========== WAL与检查点 ==========
checkpoint_timeout = 15min
checkpoint_completion_target = 0.9
max_wal_size = 4GB
min_wal_size = 1GB# ========== 自动维护 ==========
autovacuum = on
autovacuum_max_workers = 5
autovacuum_naptime = 10s
autovacuum_vacuum_scale_factor = 0.05
autovacuum_vacuum_threshold = 50
autovacuum_analyze_scale_factor = 0.02
autovacuum_analyze_threshold = 50# ========== 日志 ==========
log_min_duration_statement = 1000  # 记录慢查询
log_checkpoints = on              # 监控检查点
log_autovacuum_min_duration = 0   # 监控autovacuum

💡 使用建议:

  1. 先在测试环境验证
  2. 逐步调整,每次只改1~2个参数
  3. 结合监控工具(如Prometheus + Grafana)观察效果

📣 系列总结

回顾整个《PostgreSQL诊断系列》:

篇章核心能力
[1/6] 体检指南快速掌握数据库状态
[2/6] 锁问题排查阻塞与死锁
[3/6] 性能瓶颈定位I/O、内存、临时文件问题
[4/6] 表膨胀解决存储空间浪费
[5/6] 检查点优化WAL与持久性机制
[6/6] 配置全景系统性调优与预防

✅ 最佳实践:

  • 监控先行:用SQL诊断现状
  • 调优跟进:用配置预防问题
  • 持续迭代:定期review配置

📌系列完结撒花!

👉 你的PostgreSQL调优之旅,才刚刚开始!

强烈推荐,使用AI自动诊断

看完是不是觉得要记下好多的SQL,排查步骤又繁琐,不要担心,在 AI 的时代,让大模型来替我们排查分析数据库问题,推荐一款开源好用的MCP Server 工具:SmartDB_MCP ,它不仅能让AI与多种数据库“畅聊无阻”,还能像瑞士军刀一样,提供从SQL优化到数据库健康检测分析的一站式解决方案。
github地址 : https://github.com/wenb1n-dev/SmartDB_MCP
博文地址:SmartDB:AI与数据库的“翻译官”,开启无缝交互新时代!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/97180.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/97180.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/97180.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink Slot 不足导致任务Pending修复方案

当前有3个虚拟机节点,每个节点配置的slot节点数量是4,${FLINK_HOME}/conf/flink-conf.yaml 关于slot的配置如下: # The number of task slots that each TaskManager offers. Each slot runs one parallel pipeline. taskmanager.numberOfTas…

亚马逊合规风控升级:详情页排查与多账号运营安全构建

2025年亚马逊掀起的大规模扫号行动,聚焦商品详情页合规性审查,标志着跨境电商合规监管进入严风控时代,此次行动以关键词规范与定价诚信为核心,大量卖家因内容违规遭遇账号停用,对于卖家而言,构建系统化的合…

FISCO-BCOS-Python 模板

基于Python-SDK的FISCO BCOS区块链HelloWorld模板,提供了简单的问候语设置和查询功能。本项目采用现代Python开发实践,包含完整的配置管理、测试框架和项目结构。 快速开始 仓库地址:git clone https://gitee.com/atanycosts/python-fisco-te…

移动端(微信等)使用 vConsole调试console

本文介绍了一种在移动端真机上进行调试的方法——使用VConsole。通过简单的安装步骤和代码配置,开发者可以在移动端直接查看console.log输出,极大提升了调试效率。 摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >作…

云计算资源分配问题

这里写目录标题一、云计算资源的基本类型二、资源分配的目标三、资源分配的方式四、资源分配的技术与工具五、挑战与优化方向六、实际应用场景举例总结云计算资源分配是指在云计算环境中,根据用户需求、应用程序性能要求以及系统整体效率,将计算、存储、…

深度学习之第二课PyTorch与CUDA的安装

目录 简介 一、PyTorch 与 CUDA 的核心作用 1.PyTorch 2.CUDA 二、CUDA的安装 1.查看 2.下载安装 3.检查是否安装成功 三、PyTorch的安装 1.GPU版本安装 2.CPU版本安装 简介 在深度学习的实践旅程中,搭建稳定且高效的开发环境是一切实验与项目的基础&…

Ubuntu22.04 安装和使用标注工具labelImg

文章目录一、LabelImg 的安装及配置1. 安装2. 配置二、使用1. 基础操作介绍2. 创建自定义标签2.1 修改 predefined_classes.txt2.2 直接软件界面新增3. 图像标注3.1 重命名排序3.2 标注3.2 voc2yolo 格式转换3.3 视频转图片Yolo系列 —— Ubuntu 安装和使用标注工具 labelImgYo…

Jenkins与Docker搭建CI/CD流水线实战指南 (自动化测试与部署)

更多云服务器知识,尽在hostol.com你是否已经厌倦了那个“人肉”部署的重复循环?每一次 git push 之后,都像是一个庄严的仪式,你必须虔诚地打开SSH,小心翼翼地敲下一连串的 git pull, npm install, docker build, docke…

【数据可视化-100】使用 Pyecharts 绘制人口迁徙图:步骤与数据组织形式

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

5G相对于4G网络的优化对比

5G网络作为新一代移动通信技术,相比4G实现了全方位的性能提升和架构优化。5G通过高速率、低时延和大连接三大核心特性,有效解决了4G网络面临的数据流量爆炸式增长和物联网应用瓶颈问题 ,同时引入了动态频谱共享、网络切片等创新技术&#xff…

AR智能巡检:智慧工地的高效安全新引擎

在建筑行业,工地安全管理与施工效率的提升一直是核心议题。随着增强现实(AR)技术的快速发展,AR智能巡检系统正逐步成为智慧工地的“标配”,通过虚实结合、实时交互和智能分析,推动建筑行业迈入数字化、智能化的新阶段。本文将从技术原理、应用场景、核心优势及未来趋势等…

TypeScript:枚举类型

1. 什么是枚举类型?枚举(Enum)是TypeScript中一种特殊的数据类型,用于定义一组命名的常量值。它允许开发者用一个友好的名称来代表数值或字符串,避免使用“魔法数字”或硬编码值。基本语法:enum Direction …

Maven 编译打包一个比较有趣的问题

前言最近做项目,发现一个比较有意思的问题,其实发现了问题的根源还是很好理解,但是如果突然看到会非常的难以理解。在Java项目中,明明包名错误了,居然可以正常编译打包,IDEA报错了,但是mvn命令正…

Leetcode贪心算法

题目&#xff1a;划分字母区间 题号&#xff1a;763class Solution {public List<Integer> partitionLabels(String s) {List<Integer> list new LinkedList();int[] edge new int[27];char[] chars s.toCharArray();for(int i 0; i <chars.length;i){edge…

【密码学基础】加密消息语法 CMS:给数字信息装个 “安全保险箱”

如果说数字世界是一座繁忙的城市&#xff0c;那么我们每天发送的邮件、合同、软件安装包就是穿梭在城市里的 “包裹”。有些包裹里装着隐私&#xff08;比如银行账单&#xff09;&#xff0c;有些装着重要承诺&#xff08;比如电子合同&#xff09;&#xff0c;还有些关系到设备…

leetcode算法刷题的第二十天

1.leetcode 39.组合总和 题目链接 这道题里面的数组里面的数字是可以重复使用的&#xff0c;那可能就会有人想&#xff0c;出现了0怎么办&#xff0c;有这个想法的很好&#xff0c;但是题目要求数组里面的数字最小值为1&#xff0c;这就可以让人放心了。但是有总和的限制&…

使用Spoon报错Driver class ‘com.microsoft.sqlserver.jdbc.SQLServerDriver‘ could not be found解决方法

使用Spoon报错Driver class ‘com.microsoft.sqlserver.jdbc.SQLServerDriver’ could not be found 产生原因 出现这个错误是因为Spoon无法找到用于连接MS SQL Server的JDBC驱动程序。该驱动程序是一个jar文件,通常需要手动下载并配置。 解决方案 下载JDBC驱动程序: 访问 M…

【实时Linux实战系列】基于实时Linux的音频实时监控系统

在当今数字化时代&#xff0c;音频监控系统在许多领域都有着广泛的应用&#xff0c;例如安全监控、工业环境监测、智能交通等。音频实时监控系统能够实时采集、分析音频信号&#xff0c;并在检测到异常时发出警报&#xff0c;这对于提高安全性、优化生产流程和提升用户体验都有…

改造thinkphp6的命令行工具和分批次导出大量数据

文章目录基本用法传入参数addArgumentaddOption参数提示导出数据示例准备工作执行导出基本用法 在thinkphp6框架中&#xff0c;自带了命令行工具&#xff0c;通过配置 config/console.php &#xff0c;添加自定义的命令&#xff1a; return [commands > [//...//新增的自定…

外汇中高频 CTA 风控策略回测案例

在汇率波动日益频繁、企业与机构对风险管理要求不断提高的背景下&#xff0c;外汇交易策略已成为资产配置与对冲操作的重要工具。其中&#xff0c;CTA 策略在外汇交易中具有非常重要的实际应用价值&#xff0c;在风险控制、趋势捕捉、资金效率与交易实用性之间取得了良好平衡。…