原文地址https://github.com/NikolayS/postgres_dba postgres_dba34 个 PostgreSQL 诊断报告直接在psql内使用。无需代理无需守护进程无需外部依赖——只需 SQL。包括膨胀估算、索引健康度、锁树、清理监控、查询分析、损坏检查、缓冲池检查等等。输入:dba即可使用。快速开始gitclone https://github.com/NikolayS/postgres_dba.gitcdpostgres_dbabash-cecho\\\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表膨胀估算b2B-tree 索引膨胀估算b3通过pgstattuple分析表膨胀较耗时b4通过pgstattuple分析 B-tree 索引膨胀较耗时b5缺少统计信息的表无法估算膨胀损坏检查使用amcheckID锁类型报告内容c1AccessShareLock快速索引检查btree GINPG18。生产环境安全。c2AccessShareLock索引 堆/TOAST 检查PG14。安全但会读取所有数据。c3⚠️ ShareLockB-tree 父节点检查 — 检测 glibc/排序规则损坏。建议在克隆实例上使用。c4⚠️⚠️ ShareLock全面检查heapallindexed 父节点 堆。验证每个元组都被索引覆盖。内存分析ID报告内容m1缓冲池内容使用pg_buffercache较耗时索引分析ID报告内容i1未使用和极少使用的索引i2冗余索引i3缺少索引的外键i4无效索引i5索引清理 DDL 生成器执行 回滚清理监控ID报告内容v1当前正在进行的清理活动v2自动清理进度和队列进度监控ID报告内容p1CREATE INDEX/REINDEX进度语句分析pg_stat_statementsID报告内容s1按总时间排序的最慢查询s2完整查询性能报告s3按查询类型分组的工作负载概况调优与配置ID报告内容t1Postgres 参数调优建议t2具有自定义存储参数的对象e1已安装的扩展x1对齐填充分析实验性r1创建随机密码的用户r2修改用户为随机密码可选扩展某些报告受益于额外的扩展扩展相关报告安装方法pg_stat_statementss1, s2, s3shared_preload_libraries pg_stat_statementsamcheckc1, c2, c3, c4CREATE EXTENSION amcheck;pgstattupleb3, b4CREATE EXTENSION pgstattuple;pg_buffercachem1CREATE EXTENSION pg_buffercache;兼容性每次提交都会通过 CI 在PostgreSQL 13 到 18版本上进行测试。较旧版本9.6–12可能可用但未经主动测试。支持pg_monitor角色——大多数报告不需要超级用户权限损坏检查需要超级用户权限或显式GRANT EXECUTE。添加自定义报告在sql/目录中放入.sql文件。文件命名格式为id_name.sql。第一行必须是--注释包含描述信息——这将自动成为菜单项。# 添加或删除报告后重新生成菜单bash./init/generate.sh推荐工具pspgpspg 能让表格输出更易读\setenv PAGER pspg \pset border2\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 — nikpostgres.ai