CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
PostgreSQL DBA 入门/课时/性能与监控
RawBlame
课时目录12 节

PostgreSQL DBA 入门

  1. 01DBA 职责与 PG 架构
  2. 02安装与部署
  3. 03安全与权限
  4. 04SQL 与事务
  5. 05对象模型与类型
  6. 06索引与执行计划
  7. 07性能与监控
  8. 08备份与恢复
  9. 09复制与高可用
  10. 10PL/pgSQL 与触发器
  11. 11自动化运维
  12. 12综合练习

性能与监控

VACUUM、pg_stat、Golden Signals。

40 分钟

性能调优与连接管理

性能问题多来自 慢 SQL、错误参数、连接风暴、膨胀。DBA 用监控 + 计划 + 参数三板斧。与 /roadmaps/postgresql-dba 性能节点对齐。

学习目标

  • 启用并查询 pg_stat_statements 找 Top SQL
  • 调整 shared_buffers、work_mem、max_connections 基本思路
  • 理解 PgBouncer 与 Spring 连接池分工

核心概念

pg_stat_statements

CREATE EXTENSION IF NOT EXISTS pg_stat_statements;

SELECT calls, round(total_exec_time::numeric, 2) AS total_ms,
       round(mean_exec_time::numeric, 2) AS mean_ms,
       left(query, 100) AS query
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;

关注高 calls × mean_time;结合 EXPLAIN (ANALYZE, BUFFERS) 优化。

关键参数(postgresql.conf)

shared_buffers = 256MB          # 约内存 25%,按实例调整
work_mem = 4MB                  # 排序/哈希 per operation,慎过大
max_connections = 100           # 与 PgBouncer 配合
effective_cache_size = 1GB      #  planner 假设 OS 缓存
random_page_cost = 1.1          # SSD 可下调

改参后 SELECT pg_reload_conf();;部分需重启。

连接池架构

Spring HikariCP (每实例 10–30) → PgBouncer (transaction pooling) → PostgreSQL
# Spring Boot
spring.datasource.hikari.maximum-pool-size: 20
spring.datasource.hikari.connection-timeout: 30000

避免「每微服务 × 每 Pod × 大连接池」打满 max_connections。

与 MySQL/Spring Boot 对照

项PostgreSQLMySQL 8
慢 SQL 聚合pg_stat_statementsperformance_schema / slow log
缓冲池shared_buffersinnodb_buffer_pool_size
连接池中间件PgBouncerProxySQL / 直连
Spring 池HikariCPHikariCP(同)

本站 MySQL 本机开发可直连;PG 生产建议 应用池 + PgBouncer 双层。

练习

  • 安装 pg_stat_statements,跑 5 条不同 SQL 后查 Top 3
  • 估算:10 个 Pod × pool 30,max_connections 设多少才安全?
  • 对一条 Seq Scan 慢查询加索引并对比 mean_time
  • 小结

    先量化 Top SQL,再调索引与参数;连接数必须全局规划。 下一课备份与 PITR。

    加载本节练习…
    ← 上一课索引与执行计划下一课 →备份与恢复