对于一个 DBA 来说,从公司数据库系统的稳定程度可以看出他的能力几何,一个优秀的 DBA 不仅要保证数据库的稳定运行,还需要有能力有效处理数据库的各种突发性能问题,而最常见的性能问题,就是慢查询。
我们公司规模比较大,大大小小的项目加起来超过 100 个数据库实例,而保证这些数据库的稳定运行的重任,全部在我这里,每天都需要事无巨细地逐个排查所有问题,这是一项相当艰巨的任务,出点差错是常事,造成的影响不大还好说,如果涉及到企业利益,那就祈祷下一家公司没有那么多数据库吧。
太难了
由于每个数据库实例中都存在不少的慢查询问题,靠我人肉排查显然不太现实,在尝试了很多种自动化工具之后,终于艰难玉成,让我找到一款完美解决我问题的工具:NineData 的慢查询分析功能。它可以自动采集并记录数据库中的所有慢查询,比较亮眼的是它通过对每一条慢查询进行性能诊断,最终提供优化建议,包含添加或修改索引、调整表结构等,同时还可以根据业务类型配置 SQL 开发规范,配置完成后,系统还会基于这些规范诊断慢 SQL。
废话不多说,直接上图。
慢查询趋势图
这是单个数据源维度的慢查询趋势图,首先能看到一个时间范围内的慢查询总量,然后可以清晰看到 12 月 8 日那天产生了很多慢查询,鼠标悬浮在曲线上可以看到详情。
NineData慢查询趋势图
慢查询统计
显示该数据库在某个阶段产生的所有慢查询的详情信息。SQL 模版表示不包含具体参数的 SQL 框架,所有使用了相同 SQL 模版的慢查询都会被记录在一个模版下,展开模版可以看到所有慢 SQL 语句,包含的信息也是非常丰富,例如执行时长、查询时间、执行查询的用户、主机名称等等。
NineData慢查询统计
诊断优化
针对慢查询的 SQL 语句进行性能诊断,性能诊断的结果包含执行时间过长、有效读较低、等待时间占比偏高、缓存命中率低下等;规范审核基于管理员配置的 SQL 开发规范对 SQL 语句进行审核;索引建议基于 CBO 成本代价模型提供索引推荐,帮助 DBA 轻松优化数据库性能。
NineData诊断优化
这个工具,对于我来说简直就是久旱逢甘霖,DBA 需要的功能,它都有了,像我这种每天加班到 22 点以后的社畜,最近也开始准点下班了。
开始准点下班了
最新更新
就在近期,他们又针对慢查询分析功能发布了数据大盘和报表下载功能。
前面说过公司有 100 多个数据库实例,并且每个实例的慢查询数量都很多…那么问题来了,如果我要治理慢查询,就需要先一个一个数据源点开,找到需要治理的数据源,再进行治理,非常费劲,而这个数据大盘,则是点睛之笔!
慢查询大盘
支持按数据源、环境、标签、数据源类型进行查看,哪个数据源产生的慢查询最多一目了然。
NineData慢查询大盘
TOP 100 数据源
由高到低展示前 100 个慢查询数量最多的数据源,单击详情即可快捷进入该数据源的慢查询页面实施治理,非常方便。
NineData显示TOP 100数据源
报表下载
这个功能在我需要将优化需求提交给开发人员的时候非常有用,在数据源慢查询详情页中可将目标时间段的所有慢 SQL 整合到一个 PDF 文档中,其中包含了所有需要整改的详情信息,以便开发人员对照优化。
NineData生成慢SQL报表下载
后记
自从用了这个工具,我每天早上来到公司,慢悠悠泡一杯咖啡,然后打开电脑登录到 NineData 的控制台,查看一下前一天的慢查询报告,几分钟后,我就全面了解到了我们公司数据库这几天的整体状况,直接就可以投入到更加核心的整改工作中,而不用和以前一样花费大量的时间和精力去排查问题了,工作效率提升非常明显。
最重要的是,这款工具的可靠性非常高,通过几天的使用,没有发生任何遗漏,每一个细小的点都会被它捕捉并呈现,老板再也不用斥巨资招 N 个 DBA 处理这些问题,终于不用再卷了。