Skip to main content

老板崩溃了,一条慢 SQL 搞挂了整个核心库

我是一个公司的 DBA,说一说我的亲身经历。前段时间,我的老板很愤怒,我也差点进了裁员名单,为什么?核心库挂了!客户的业务系统全线崩溃,研发与售后连着加了 8 个小时的班...

原因居然是,一个新人程序员往线上发布了一条针对大表的无索引 SELECT 查询,导致后台过载。

此类问题不胜枚举,在很多企业中都会存在,由于种种不可预见的原因,问题 SQL 在测试中无法被发现,发上线后才被客户遇到,这个时候才不得不执行回滚操作,给业务的连续性带来了严重影响,最重要的,是影响了用户体验,给企业的信用带来不可磨灭的污点。而这个责任,最终将落到 DBA 团队或研发团队头上。

因此,作为数据库运维的重要手段之一,SQL 审核在保障线上数据库稳定性方面显得格外的重要。对于企业的核心库来说,为了杜绝发布事故、规范 SQL 语句,原则上所有未经审核的 SQL 都应该被拒绝发布到线上环境,这通常需要专业 DBA 审核每一条需要发布的 SQL 语句。

随着业务的高速迭代和规模的扩大,仅靠 DBA 人肉审核变得越来越难:

首先,人工审核效率低下,无法满足高速迭代中的业务需求。大多数企业的实际情况是,DBA 会忽略权重较低的业务 SQL,把主要精力放在权重较高的业务上,导致低权重业务长期处于无人监管状态,安全隐患极大。

其次,人工审核可能出现疏漏,未经审核的 SQL 一旦发布到线上,将可能引发严重的线上问题。

最后,DBA 需要花费大量的时间和精力去处理机械、重复的审核工作,压力太大,无法专注于处理更复杂、更高级的数据库管理任务。

有什么办法解决这些问题吗?

答案是肯定的,我们迫切需要一种自动化的 SQL 审核手段,来替代机械的审核工作。在试用了 NineData 的 SQL 自动化审核功能之后,企业在开发阶段就实现了 SQL 质量的跟踪治理,从根本上规避上述问题,避免线上事故的发生。

还没有听说过 NineData SQL 自动化审核?

先简单介绍一下这款 NineData SQL 审核工具,它是专门为企业量身定制的 SQL 发布安全解决方案。针对应用代码发版之前的阶段,支持对所有需要发布的 SQL 语句进行审核,基于智能化的算法和企业配置的 SQL 开发规范,自动识别并防范问题 SQL,只有在 SQL 审核通过的情况下,应用才能进行发版。

NineData SQL 审核具有如下功能:

  • 审批流程:提供完善的 SQL 审批流程,根据您的业务特点,支持仅智能预审(适用于低权重业务)、智能预审+人工审核(适用于高权重业务)等多种流程配置,同时,支持自定义审核人员以及审核层级。
  • 智能预审:基于智能化的算法和企业配置的 SQL 开发规范,自动识别并防范问题 SQL,根据管理员配置的审批流程,可以在进入人工审核阶段之前拦截问题 SQL,只有在用户修改完问题 SQL 之后才能继续推进流程。
  • 优化建议:在智能预审阶段,系统会针对提交的 SQL 给出优化建议,包含了语法、索引、命名规范等等,帮助开发人员优化企业数据库,彻底杜绝线上问题。
  • 人工审核:除了智能预审之外,NineData SQL 审核还支持人工审核。在智能预审完成了繁杂的机械化审核任务之后,让 DBA 来做最后的审核,以确保万无一失。

通过 NineData SQL 审核,企业实现了多个目标:

  • 加速了开发迭代:SQL 审核能够迅速审查大量的 SQL 语句,为开发团队提供快速的反馈。帮助业务跟随市场变化更快速地迭代。
  • 提高了开发质量:在开发阶段发现并修复 SQL 质量问题,能够减少线上问题的发生。通过规范 SQL 语句,确保发布 SQL 健壮与高效,提升应用的整体质量。
  • 降低了 DBA 工作压力:将机械、重复的审核工作交给 SQL 审核处理,可以让 DBA 更专注于处理更复杂、更高级的数据库管理任务,提高工作效率。

NineData SQL 审核的使用方法

  1. 创建 SQL 审核任务。

    iShot_2023-11-28_13.50.06

  2. 查看智能预审建议总览。

    iShot_2023-11-28_13.56.54

  3. 查看针对目标 SQL 的优化建议,包含基于 SQL 开发规范的规范审核,以及基于 AI 自动判断的索引推荐

    iShot_2023-11-28_13.59.56

    tip

    针对优化建议优化完成后,可以单击页面上的重新检查,查看是否已彻底优化。

    image-20231128140607078

  4. 提交人工审批。

    iShot_2023-11-28_14.06.38

  5. 管理员审批完成后,流程结束。

    iShot_2023-11-28_14.12.46