SQL审核全生命周期管理:DBdoctor如何从开发到生产,提前规避资损风险

53 阅读5分钟

**
前言**

一条简单的SQL语句,如果没有经过严格审查和优化,可能会引发线上业务问题,远不仅仅是“性能慢”,甚至可能导致公司遭受严重的资损。为了防范这种风险,许多公司都制定了严格的SQL开发规范或引入了SQL审核工具。但问题是,这些措施真的能彻底解决SQL引发的业务故障吗?事实上,即使有了规范和工具,我们仍然会遇到以下类似问题:

  • 线下库表的数据量少:不能真实评估系统真实运行情况
  • 生产数据分布存在倾斜:测试环境SQL执行没问题,发布生产变成了慢SQL
  • 按照SQL规范写的SQL:上线后还是存在问题,甚至导致故障
  • 低代码平台拿不到SQL:不能评估平台是否存在代码质量问题
  • 业务新增代码SQL提取:开发语言多,不能提取完整SQL进行Review
  • SQL索引优化成本高:不能准确评估加索引能否带来提升

......

那么,是否有一款能够解决上述问题并覆盖数据库性能全生命周期的SQL审核工具呢?答案是肯定的。接下来,让我们一起了解DBdoctor是如何实现SQL质量全生命周期管理的。

SQL质量全生命周期管理方案

该方案围绕SQL的全生命周期展开,覆盖开发、测试和生产三个阶段。不仅有传统的SQL开发规范审核,还具备行业独有的基于外置COST优化器的性能审核,在开发和测试阶段即可精准评估SQL上线后的性能表现。接下来,我们将针对这三个阶段进行详细阐述。

一.开发阶段

最终导致数据库问题的这些SQL如果我们追溯到开发阶段,主要分为两类:

  • 版本升级时候的数据库升级脚本,主要是一些DDL以及预置数据的SQL;
  • 代码中SQL,包括源码拼接SQL,ORM框架等等。

针对以上两类问题,DBdoctor在开发阶段可提供以下解决方案:

IDE审核

编写代码时,在IDE中通过插件的形式集成DBdoctor的SQL审核能力,为SQL及DAO层的开发人员提供实时的SQL审核服务,帮助开发人员及时发现和解决SQL问题。

CICD审核

当提交SQL到代码仓库时,DBdoctor的SQL审核能力可以集成到CICD流水线中,自动检查本次提交的SQL代码,确保SQL代码符合既定的SQL开发规范。

代码仓审核

当提交SQL到代码仓库时,DBdoctor的SQL审核能力还可以直接对接代码仓的WebHook,当提交的代码中发生SQL变动时 ,代码仓可将变动对接至DBdoctor平台,对发生变动的SQL文件进行审核。自动检查本次提交的SQL代码,并将SQL审核结果以Comment的形式展示给用户。

针对mybatis xml mapper 文件的SQL审核,DBdoctor做了进一步增强。相比于业界已有产品,DBdoctor可以实现对mapper中SQL的各个字段类型的精准识别,并结合外置COST优化器,评估SQL未来上线后性能,并推荐出最优索引。

二.测试阶段

前面我们也提到了,编程语言是多种多样,编程语言中SQL的拼写方式更是五花八门,因此从源代码层面是很难将每种场景的SQL都获取完整。为了解决这一问题,在测试阶段DBdoctor借助eBPF技术从数据库内核中无损的采集到了全量SQL执行记录,并基于全量SQL执行记录进行SQL指纹维度的聚合,同时还对SQL指纹进行了版本划分,可针对新版本的增量SQL进行全量SQL审核,从而协助测试人员完成对该版本新增SQL的全量测试,确保问题SQL在测试阶段闭环解决,不流入线上。

三.生产阶段

针对生产环境的存量SQL,DBdoctor支持慢SQL审核以及库表元数据审核。

慢SQL审

DBdoctor支持实时抓取慢SQL并进行SQL指纹维度的聚合,同时自动选取该指纹中最差的一条SQL进行审核,审核完成后系统会自动检测该SQL是否根据建议进行整改,对于按照建议进行整改的SQL,系统会自动判定为已修复,而对于没有按照建议进行整改的SQL会进行持续的晾晒以及告警通知,确保线上SQL问题闭环跟踪,不遗漏任何问题。

库表元数据审核

支持对存量的建表语句进行全量的SQL审核,确保存量建表语句符合既定的SQL开发规范。

此外运维人员还可借助生产审核中的工单流程,将问题SQL分配给指定人员处理并进行全流程跟踪,确保问题无遗漏。

总结

DBdoctor通过覆盖SQL全生命周期的审核方案,可以有效解决传统工具难以应对的行业难题,比如在开发阶段如何评估SQL上线后是否存在性能问题,提升代码质量并优化数据库性能。立即下载最新版本的DBdoctor,给您的业务保驾护航,过节稳稳稳!

免费下载/在线试用

www.dbdoctor.cn/?utm=22

公众号:DBdoctor

如果您是开发或DBA欢迎关注公众号,关注公众号回复:“进群”,可拉您进入技术交流群