开源:基于.Net开发的数据库自治诊断平台——DBPilot
开源:基于.Net开发的数据库自治诊断平台——DBPilot
GitHub:https://github.com/SkyChenSky/DBPilot
NuGet:https://www.nuget.org/packages/DBPilot
如果对你有帮助,欢迎 Star,这是对开源作者最直接的支持。
2026-09-19调整:发布 0.5.3:主密钥改为必填并补全文档说明(含换钥报错 FAQ),NuGet 元包纯化,README 双语全面精简重排。
这篇文章连代码大概 8000 字,可能花您 15 分钟阅读。
我有话想说
我有一个心愿:基于 .NET 做一个对后端开发日常工作真正有帮助的开源项目。
我也有一个心病:优化数据库性能的方案我很丰富(都整理在多年前那篇《后端思维之数据库性能优化方案》里了),可实际工作中每次遇到性能问题要定位根源,都是一件很头疼的事情。
心愿与心病,就差一次行动。这一次,我和 Claude Code + GLM 5.3 结对,完成了 DBPilot——一个数据库自治诊断平台——的开发与开源。心愿已了,心病也一并了了。
下面,就是这桩“了心事”的完整交代。
前言
关注我博客的朋友应该有印象,我那篇方法论里整理的优化“八大方案”——减少数据量、分库分表、空间换性能、缓存、一主多从、换存储……那是典型的“事前”思维:在设计与架构层面把性能问题消解在发生之前,治的是“未病”。
但现实是,没有系统能把所有问题都防在门外。等故障真的发生了——特别是那些“来无影去无踪”的偶发飙高——你会发现手里缺的不是方案,而是证据和原因:问题出在哪、从什么时候开始的、谁干的、为什么好好的突然就有问题了。这正是开头那个“心病”的由来。
而 DBPilot,干的就是“事后”那一环——持续采集、留痕、定位问题根源,治“已病”时的那一脉。跟那篇方法论放在一起正好互补:方法论告诉你怎么解决,DBPilot 帮你找到根源。
先说清楚它是干嘛的:自托管的数据库性能诊断系统。你给它几个数据库实例的连接信息,它持续采集性能数据,然后在一个 Web 控制台里完成 DBA 的日常工作。支持监控 SQL Server(2008~2022)、MySQL 8.0+、PostgreSQL 13+ 三种引擎,NuGet 上一行命令装齐。
为什么要做这个东西?
先说说现实的处境。不是每家公司的数据库都上了云监控,也不是每家都配得起 DBA,大多数时候数据库出了状况,都是咱们开发自己顶上去——可处理数据库性能问题这件事,别说得心应手了,连“快速”两个字都谈不上。
最磨人的是那种偶发的数据库报警:一刹那的飙高,等你有反应登上去看,现场已经没了,报警过了就是过了,什么记录、什么证据都不剩。你安慰自己“偶尔一下而已”,于是不了了之。
我一直认为:问题的反复出现,是因为没有找到根本原因——有效的技术手段,只需要使用一次。隐患不理,只会一直在悄悄长大,持续久了,某天突然爆发——整个系统缓慢与阻塞,连锁反应一片。这个时候想定位?无从下手,只能凭着经验、记忆去猜:“上周是不是发过版?那天好像跑了张大报表?”
从技术上说,这事儿的根源就一句:DMV 是内存里的累计值,重启就清零——不留痕就没有历史,没有历史就没有趋势,没有趋势你就说不清“它是从什么时候、因为什么开始恶化的”。
没有证据,猜,是唯一的排查手段。
商业云产品确实解决了这个问题,体验也不错,但要么贵,要么把你锁死在自家云上。对于很多中小公司、还有像我这样“自己的数据库自己疼”的个人开发者,一直缺一个部署轻、引擎全、开箱即用的选择。
于是就有了 DBPilot。说句实在话,开发过程中遇到头疼的问题是常有的事,而优秀的开发人员,得学会利用工具协助自己解决问题——无论是我以前写 IDE 插件、整理工具库,还是现在做一个��据库自治诊断的开源项目,都是同一个道理。
此外,一开始我只是想给自己写个工具,写着写着发现这个东西的完成度已经值得分享出来了——那就开源吧,反正软件工程没有银弹,但至少可以多一个选择。
五脏俱全
老规矩,直接上图

性能洞察是我最喜欢的功能:按平均活跃会话(AAS)把负载拆解成 CPU / 锁 / IO / 等待,一眼看出是哪类资源打满了,还能下钻到单条 SQL 的贡献。资源到底是谁吃掉的,不用再猜了。

性能趋势:CPU / 内存 / PLE / QPS·TPS / IO / 磁盘用量,10 秒粒度,长区间自动降采样。图上还可以叠加事件竖线——死锁、慢 SQL、计划变更发生在哪个时刻,悬停就能看到,“变慢”和“出事”的时间对应关系一目了然。

死锁分析:自动捕获死锁事件,图形化展示环路与各方语句、持锁/等待关系。


阻塞分析:实时阻塞树(头阻塞者、链路、等待时长)+ 历史统计与趋势。那个“睡着拿锁”的头会话,DBPilot 会把它的最后一条语句也补查出来。


索引使用率和慢查询日志:读写计数识别无用索引(附删除/禁用脚本),超阈值 SQL 自动留档(完整文本、耗时、IO、指纹)。


还有 Top SQL(相同指纹自动合并、噪音一键排除)、执行计划(版本快照 + 变更事件 + 前后资源对比 + 计划树)、缺失索引(优化器推荐 + 建索引脚本)——篇幅原因不一一贴图了,仓库 README 里有完整截图。
引擎支持
监控能力矩阵直接看表(◐ 表示降级形态):
|
评论 |
|---|