学习路径

从判断依据到具体操作,沿现有文章逐步深入。

性能优化路径

7 篇

适合正在处理慢 SQL、整体负载升高、索引效果不确定的场景。

从执行计划与负载统计定位慢 SQL,建立可重复的诊断顺序。

  1. EXPLAIN 为什么应该带 BUFFERS
  2. 为什么 actual time 和 Execution Time 有很大差异?
  3. pg_stat_statements 入门
  4. 为 pg_stat_statements 找到真实 SQL 样例
  5. 如何判断一个查询是否太慢
  6. 如何做基准测试
  7. work_mem 调优

DBA 排障路径

7 篇

适合生产环境值班、处理重启、WAL 增长、复制延迟和锁等待。

区分启动、锁、WAL 与复制问题,逐步缩小生产故障范围。

  1. 排查并加速 Postgres 停止和重启
  2. 排查 Postgres 启动缓慢
  3. 排查 pg_wal 目录增长
  4. heavyweight locks 分析:基础
  5. 理解 DDL 被什么阻塞
  6. 如何排查 LISTEN/NOTIFY 引起的提交阻塞
  7. 排查流复制延迟

索引治理路径

6 篇

适合做索引评审、清理无效索引、降低写入和规划开销。

从索引设计到维护与清理,判断哪些索引值得保留。

  1. 过度索引
  2. 创建索引:基础
  3. 创建索引:进阶
  4. 索引维护
  5. 查找未使用索引
  6. 查找冗余索引

在线变更路径

7 篇

适合上线 schema 变更、避免锁等待扩大、降低 DDL 风险。

理解 DDL 的持锁过程,为数据回填与结构变更控制风险。

  1. 如何安全执行 PostgreSQL 在线变更:DDL、数据回填与批量删除
  2. 处理 OLTP 长事务
  3. heavyweight locks 分析:锁树
  4. 删除列
  5. 添加列
  6. 无停机添加 CHECK 约束
  7. 添加外键

存储与 Vacuum 路径

6 篇

适合理解膨胀、XID 回卷、WAL、页面布局和 autovacuum 行为。

把行版本、清理和 WAL 联系起来,理解空间与事务年龄问题。

  1. 理解 tuple 在表中的稀疏存储
  2. 理解 LSN 和 WAL 文件名
  3. 监控 XID 回卷风险
  4. 监控 xmin horizon 避免回卷和膨胀
  5. 处理 bloat
  6. Autovacuum 队列和进度

日常工具路径

6 篇

适合补齐 psql、备份恢复、Docker、脚本化和日常操作手感。

熟悉 psql、备份恢复与脚本工具,完善日常数据库操作。

  1. 如何退出 psql
  2. 使用 Docker 运行 Postgres
  3. 导入 CSV 到 Postgres
  4. 使用 pg_restore
  5. 在 psql 脚本中使用变量
  6. psql 快捷操作

支持作者

感谢支持 PostgreSQL Howto 的长期维护。

微信赞赏码

读者交流群

二维码若已过期,可通过公众号 PostgreSQL 学徒或邮件联系。

PostgreSQL 学徒读者交流群二维码