当前位置: 首页 > news >正文

【PostgreSQL】如何通过调整PostgreSQL配置参数提高数据库性能

如何通过调整PostgreSQL配置参数提高数据库性能

      • 1. 数据库初始性能
      • 2. 内存相关参数
      • 3. WAL(Write-Ahead Logging)相关参数
      • 4. 并行查询相关参数
      • 5. 连接相关参数
      • 6. 根据情况调整

1. 数据库初始性能

使用pgbench在更新PostgreSQL数据库配置前先测试下数据库性能。测试PG数据库使用工具——pgbench。如何使用的PostgreSQL数据库没有安装该插件需要先进行安装。
然后,创建一个测试数据库性能用的测试库pgbench_test,命令:

createdb pgbench_test

接着,执行如下命令初始化数据:

pgbench -i -s 10 pgbench_test

-i: 表示初始化;
-s: 缩放因子,用于控制生成测试数据的数据量,-s 10 表示生成 10 倍于默认数据量的测试数据(默认 100,000 行数据)。
pgbench_test: 指定生成数据的数据库;
执行如下命令进行基准测试:

pgbench -c 10 -j 2 -t 1000 pgbench_test

-c 10: 表示使用10个并发的客户端连接;
-j 2: 使用2个线程处理;
-t 1000: 每个客户端发起1000个事务;

我的测试结果如下:
在这里插入图片描述

2. 内存相关参数

  • shared_buffers
    • 建议设置为系统内存的 25%-40%
    • 这是PostgreSQL用于缓存数据的内存区域。
  • maintenance_work_mem
    • 这是维护操作(如VACUUMCREATE INDEX)可以使用的内存。
    • 建议设置为系统内存的 5%-10%

3. WAL(Write-Ahead Logging)相关参数

  • wal_buffers
    • 这是WAL日志缓存的大小。
    • 默认值为-1(自动调整),通常不需要修改。如果需要手动设置,建议为16MB。
  • checkpoint_timeout
    • 这是检查点的时间间隔。增加此值可以减少检查点频率,从而减少I/O压力。
    • 建议设置为15分钟到30分钟。

4. 并行查询相关参数

  • max_parallel_workers_per_gather
    • 这是每个查询可以使用的并行工作进程数:
    • 建议设置为CPU核心数的 50%-75%
  • max_worker_processes:
    • 这是PostgreSQL可以使用的最大工作进程数;
    • 议设置为CPU核心数的 2倍

5. 连接相关参数

  • max_connections
    • 这是PostgreSQL允许的最大连接数
    • 根据应用需求设置,避免设置过高导致资源耗尽
  • effective_cache_size
    • 这是操作系统和PostgreSQL可以使用的缓存大小;
    • 建议设置为系统内存的 50%-75%

6. 根据情况调整

因为我是在云服务器上进行的测试,服务器规格2核4G,能榨取的性能有限:
在这里插入图片描述
在这里插入图片描述

但是调整之后还是略有提高,如下:
在这里插入图片描述
PS:调整时切记根据自己服务器规格和数据库的使用场景来,盲目调整可能导致性能恶化。

相关文章:

  • Git Repo下如何制作一个patch文件
  • Oracle:执行DELETE语句长时间无响应的排查步骤及解决方案
  • 超多目标优化:基于导航变量的多目标粒子群优化算法(NMOPSO)的无人机三维路径规划,MATLAB代码
  • 机器视觉--Halcon的数据结构(数组)
  • STM32单片机开发(6).离散PID公式:位置式PID 增量式PID
  • Unity 3D模型边缘锯齿严重
  • Android 技术栈
  • 跟着李沐老师学习深度学习(十四)
  • Visual Studio更新说明(关注:.NET+AI生产力)
  • 本地部署Qwen2.5-VL-7B-Instruct多模态视觉大模型(Windows篇)
  • docker部署安装Seata服务
  • 小波变换背景预测matlab和python样例
  • 从头再来!社招找工作——算法题复习九:动态规划
  • 在 Mac ARM 架构上使用官方安装包安装 MySQL
  • 大语言模型(LLM)微调技术笔记
  • PH热榜 | 2025-02-23
  • PyEcharts 数据可视化:从入门到实战
  • NoSQL注入攻击如何防范
  • 什么是完全前向保密(PFS)?
  • Redis底层数据结构
  • 微信文档/长尾词seo排名优化
  • 网站制作的基础/搜狗站长平台验证不了
  • 做网站的一些话术/百度竞价价格查询
  • 草金加工东莞网站建设/设计素材网站
  • iis7.0网站错误代码解决/推广普通话手抄报图片大全
  • xp做网站服务器吗/申请一个网站需要多少钱