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 小时前
etcd 显示连接失败
数据库·chrome·etcd
本体智能2 小时前
预制指标、宽表、SQL、本体ABC:真正决定长期成本的,是一次变更会波及多少层
数据库·sql·本体神经网络·uino数据智能引擎
长安11082 小时前
数据库基础知识----数据库大观
数据库·oracle
瀚高PG实验室2 小时前
使用hgdbdeveloper开发工具导出数据后在异机恢复时报错
数据库·瀚高数据库
百结2143 小时前
PostgreSQL 初体验
数据库·postgresql
ward RINL4 小时前
Redis 安装及配置教程(Windows)【安装】
数据库·windows·redis
bingHHB5 小时前
金蝶云星空旗舰版 × 赛狐ERP:亚马逊卖家业财一体化的最后一公里
运维·数据库·集成学习
Nontee5 小时前
Redis高可用架构解析
数据库·redis·架构
淼淼爱喝水6 小时前
DVWA SQL 注入(Medium/High 级别)过滤绕过与防范实验(超详细图文版)
数据库·sql·网络安全
csdn_aspnet6 小时前
MySQL主从延迟根因诊断法,从网络、IO、SQL到参数,系统化定位高并发下的同步瓶颈
数据库·mysql·主从