DeepSeek总结的postgres_dba诊断报告使用

原文地址:https://github.com/NikolayS/postgres_dba

🐘 postgres_dba

34 个 PostgreSQL 诊断报告,直接在 psql 内使用。 无需代理,无需守护进程,无需外部依赖------只需 SQL。

包括:膨胀估算、索引健康度、锁树、清理监控、查询分析、损坏检查、缓冲池检查等等。输入 :dba 即可使用。

快速开始

bash 复制代码
git clone https://github.com/NikolayS/postgres_dba.git
cd postgres_dba
bash -c "echo \"\\set dba '\\\\\\\\i $(pwd)/start.psql'\" >> ~/.psqlrc"

通过 psql 连接到任何 Postgres 服务器,然后输入 :dba

要求 psql 10+。 服务器可以是任意版本。为了获得最佳体验,建议使用最新的 psql 客户端。

报告清单

常规报告 (0--3)

ID 报告内容
0 节点信息:主/备、复制延迟、数据库大小、临时文件、WAL、复制槽
1 数据库大小和统计
2 表和索引大小、行数统计
3 负载概况

活动与锁

ID 报告内容
a1 按数据库、用户、状态分组的当前连接
l1 锁树(轻量级)
l2 带等待时间的锁树(PG14+ 使用 pg_locks.waitstart

膨胀分析

ID 报告内容
b1 表膨胀估算
b2 B-tree 索引膨胀估算
b3 通过 pgstattuple 分析表膨胀(较耗时)
b4 通过 pgstattuple 分析 B-tree 索引膨胀(较耗时)
b5 缺少统计信息的表(无法估算膨胀)

损坏检查(使用 amcheck

ID 锁类型 报告内容
c1 AccessShareLock 快速索引检查:btree + GIN(PG18+)。生产环境安全。
c2 AccessShareLock 索引 + 堆/TOAST 检查(PG14+)。安全,但会读取所有数据。
c3 ⚠️ ShareLock B-tree 父节点检查 --- 检测 glibc/排序规则损坏。建议在克隆实例上使用。
c4 ⚠️⚠️ ShareLock 全面检查:heapallindexed + 父节点 + 堆。验证每个元组都被索引覆盖。

内存分析

ID 报告内容
m1 缓冲池内容(使用 pg_buffercache,较耗时)

索引分析

ID 报告内容
i1 未使用和极少使用的索引
i2 冗余索引
i3 缺少索引的外键
i4 无效索引
i5 索引清理 DDL 生成器(执行 & 回滚)

清理监控

ID 报告内容
v1 当前正在进行的清理活动
v2 自动清理进度和队列

进度监控

ID 报告内容
p1 CREATE INDEX / REINDEX 进度

语句分析(pg_stat_statements

ID 报告内容
s1 按总时间排序的最慢查询
s2 完整查询性能报告
s3 按查询类型分组的工作负载概况

调优与配置

ID 报告内容
t1 Postgres 参数调优建议
t2 具有自定义存储参数的对象
e1 已安装的扩展
x1 对齐填充分析(实验性)
r1 创建随机密码的用户
r2 修改用户为随机密码

可选扩展

某些报告受益于额外的扩展:

扩展 相关报告 安装方法
pg_stat_statements s1, s2, s3 shared_preload_libraries = 'pg_stat_statements'
amcheck c1, c2, c3, c4 CREATE EXTENSION amcheck;
pgstattuple b3, b4 CREATE EXTENSION pgstattuple;
pg_buffercache m1 CREATE EXTENSION pg_buffercache;

兼容性

每次提交都会通过 CI 在 PostgreSQL 13 到 18 版本上进行测试。较旧版本(9.6--12)可能可用,但未经主动测试。

支持 pg_monitor 角色------大多数报告不需要超级用户权限(损坏检查需要超级用户权限或显式 GRANT EXECUTE)。

添加自定义报告

sql/ 目录中放入 .sql 文件。文件命名格式为 <id>_<name>.sql。第一行必须是 -- 注释,包含描述信息------这将自动成为菜单项。

bash 复制代码
# 添加或删除报告后,重新生成菜单
bash ./init/generate.sh

推荐工具:pspg

pspg 能让表格输出更易读:

sql 复制代码
\setenv PAGER pspg
\pset border 2
\pset linestyle unicode

致谢

基于多年来许多人贡献的诊断查询构建而成:

  • Gilles Darold (ioguix) --- 膨胀估算查询
  • Alexey Lesovsky , Maxim Boguk , Ilya Kosmodemiansky , Andrey Ermakov --- pg-utils 诊断套件
  • Josh Berkus , Greg Smith , Christophe Pettus , Quinn Weaver --- pgx_scripts 集合

许可证

BSD 3-Clause

联系方式

Nikolay Samokhvalov --- nik@postgres.ai

相关推荐
一个响当当的名号1 小时前
project3
数据库
嵌入式×边缘AI:打怪升级日志10 小时前
编写 Bootloader 实现烧录功能
数据库
砚边数影11 小时前
模型持久化(二):从 KingbaseES 加载模型,实现离线预测
数据库·机器学习·kingbase·模型推理·数据库平替用金仓·金仓数据库
Ama_tor12 小时前
Navicat学习01|初步应用实践
数据库·navicat
山岚的运维笔记12 小时前
SQL Server笔记 -- 第65章:迁移 第66章:表值参数
数据库·笔记·sql·microsoft·sqlserver
番茄去哪了13 小时前
苍穹外卖day05----店铺营业状态设置
java·数据库·ide·redis·git·maven·mybatis
暮色妖娆丶15 小时前
Spring 源码分析 事务管理的实现原理(下)
数据库·spring boot·spring
暮色妖娆丶15 小时前
Spring 源码分析 事务管理的实现原理(上)
数据库·spring boot·spring
LaughingZhu15 小时前
Product Hunt 每日热榜 | 2026-02-18
大数据·数据库·人工智能·经验分享·搜索引擎