跳到主要内容

SQL 代码审核

NineData SQL 代码审核用于应用代码发布之前的 SQL 语句安全性、效率审核,确保发布的 SQL 语句符合规范,同时为无索引的 SQL 语句推荐合适的索引,提升代码发布的效率和准确性。

背景信息

作为数据库运维的重要手段之一,SQL 代码审核在保障线上数据库稳定性方面扮演着不可或缺的角色。原则上,为了杜绝发布事故、规范 SQL 语句,所有未经审核的 SQL 都应该被拒绝发布到线上环境。然而,随着业务的高速迭代和规模的扩大,依靠专业 DBA 人工审核每一个 SQL 变得越来越难以实现。

在这种现实情况下,我们迫切需要一种自动化的 SQL 代码审核手段,能够在业务高速迭代的同时,确保 SQL 语句的高质量和安全性。平台的自动化审核成为解决这一难题的创新途径。通过引入自动化审核,我们能够在开发阶段就实现 SQL 质量的跟踪治理,从而在根本上避免线上慢 SQL 问题的发生。

什么是 NineData SQL 代码审核?

NineData SQL 代码审核工具为企业的 SQL 发布安全提供了全方位的解决方案。针对应用代码发版之前的阶段,支持对所有需要发布的 SQL 语句进行审核,基于智能化的算法和企业配置的 SQL 开发规范,自动识别并防范问题 SQL,只有在 SQL 代码审核通过的情况下,应用才能进行发版。

通过 NineData SQL 代码审核,可以实现如下目标:

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

前提条件

  • 已创建或加入组织,并且该组织已开通数据库 DevOps 企业版,同时请确保您的包年包月订阅未过期。
  • 当前账号已切换到目标组织。更多信息,请参见切换到组织
  • 您使用的数据源为 MySQL、PostgreSQL、Oracle、OceanBase Oracle、OceanBase MySQL、Db2、TiDB、TDSQL MySQL 版。
  • 您已将需要进行 SQL 代码审核的数据源录入到 NineData 控制台,更多信息,请参见创建数据源
  • 如需基于数据库的全量查询日志进行审核,则您已开启数据源的全量日志,如未开启,页面会进行提醒,请根据页面提示开启。
  • 如需基于数据库的慢查询日志进行审核,则您已开启数据源的慢查询日志,如未开启,页面会进行提醒,请根据页面提示开启。

提交 SQL 代码审核

  1. 登录 NineData 控制台

  2. 在左侧导航栏单击 数据库 DevOps>SQL 代码审核

  3. SQL 代码审核页面,单击创建任务,根据下表进行配置。

    参数
    说明
    任务名称输入 SQL 代码审核任务的名称,该名称通常包含了 SQL 语句的执行目的,为减少沟通成本,请尽量使用有意义的名称。最多支持 64 个字符。
    数据源选择需审核的 SQL 将作用于哪个数据源。
    选择需审核的 SQL 将作用于哪个数据库。
    备注(可选)针对当前 SQL 代码审核任务未尽事项的说明。
    提交方式选择需要审核 SQL 来源。
    • SQL 文本:直接在文本框中输入需要审核的 SQL 语句。
    • SQL 文件:单击上传文件,选择并上传包含需审核 SQL 语句的文件,支持同时上传多个文件。
      说明:如需删除已上传的 SQL 文件,可以在上传完成后,把鼠标移动到文件名处,可在文件名右侧单击delete图标删除该文件。
    • XML 文件:上传 XML 文件或包含 XML 文件的 ZIP 压缩包。
    • 代码包:上传包含代码文件(XML 文件、SQL 文件)的压缩包。
    • 慢查询日志:基于数据库中的慢查询日志自动审核慢 SQL,您还需要在审核时间段中,选择慢 SQL 产生的时间范围,默认为当前时间点的前 24 小时,最大可选范围为 24 小时,可选择距离当前时间点前一个月的数据。
    • 全量查询日志:基于数据库中的全量查询日志自动审核在线 SQL,您还需要在审核时间段中,选择 SQL 产生的时间范围,默认为当前时间点的前 12 小时,最大可选范围为 24 小时,可选择距离当前时间点前一个月的数据。
    审核模式
    • 全量审核:仅查看当前 SQL 语句的审核结果。
    • 差量审核:结合最近一次审核通过的历史 SQL 代码审核结果,查看当前 SQL 语句的差异化结果。
  4. 单击创建 SQL 代码审核,进入智能预审流程。在该流程中,系统会基于智能化算法,针对您提交的 SQL 进行自动预审,并给出优化建议。基于当前数据源关联的 SQL 开发规范,会有如下几个结果:

    • 预审通过:根据审批流程的配置情况,任务状态会更改为待提交审批成功,如果是前者,请继续下一步,如果是后者,本流程结束。
    • 预审不通过:任务状态会更改为智能预审失败,您可以单击页面右上角的重新检查再次预审,也可以单击撤回重新编辑并提交。
    提示

    您可以基于系统提示的优化建议和索引推荐,优化您的 SQL 语句和索引。更多信息,请参见查看优化建议

  5. 在页面右上角单击提交审批,在弹出的窗口中选择流程审批人员,单击确定

    提示
    • 根据审批流程配置的不同,此处需要选择的审批人员数量不同,请根据实际情况选择。
    • 如果当前审批流程中开启了不指定审批人,则此处将显示提交后,所有审批人均可审批,请在审批进程查看结果,您无需手动指定审批人,所有具备审批当前工单的人员均会收到审批提醒并支持对该工单进行审批。

  6. 任务状态变更为审批中,在审批通过之前,您可以进行如下操作。

    • 撤回:撤回 SQL 审批。更多信息,请参见撤回 SQL 审批
    • 转交:更改该 SQL 审批的审批人。

查看优化建议

  1. 登录 NineData 控制台

  2. 在左侧导航栏单击 数据库 DevOps>SQL 代码审核

  3. SQL 代码审核页面,单击目标 SQL 代码审核的任务 ID 或单击任务右侧操作列的详情

  4. 任务详情页中,可以查看针对该 SQL 代码审核任务生成的优化建议,包含了规范审核索引推荐。在该页面,您可以进行如下操作。

    review_details

    操作
    说明
    查看整体的优化建议审核列表页签下,展示建议的总量以及每条 SQL 对应的建议。单击规范审核索引推荐右侧的查看详情(仅在有优化建议时显示),查看整体的优化建议。
    筛选 SQL 语句审核列表页签下,单击右上角的下拉框,可以根据全部必须改进建议改进索引推荐语法问题等类别筛选命中对应规则的 SQL 语句。
    查看规范审核索引推荐详情审核列表页签下,将鼠标悬浮在目标 SQL 语句右侧规范审核列或索引推荐下的数字上,如果有针对该 SQL 语句的优化建议,则会显现浮层并显示具体内容。
    查看目标 SQL 语句的优化建议审核列表页签下,单击目标 SQL 语句右侧操作列的详情,可以打开诊断优化页,在这里,您可以查看针对该 SQL 语句的详细的规范审核索引推荐,以及 SQL 语句本身。同时,您还可以在该页面中单击执行计划元数据页签查看该 SQL 语句的执行计划和元数据信息。
    查看整体的 SQL 详情单击SQL 详情页签,即可查看当前 SQL 代码审核任务中的所有 SQL 语句。
    提示

    关于规范审核索引推荐的说明:

    • 规范审核:基于当前数据源绑定的 SQL 开发规范,针对 SQL 语句进行审核,并给出优化建议。
    • 索引推荐:基于人工智能针对 SQL 语句进行审核,并给出索引优化建议。

撤回 SQL 审批

SQL 审批的状态处于智能预审失败待提交审批不通过时,您可以撤回该 SQL 审批的申请,撤回后,您可以重新编辑该任务单再次提交。

前提条件

  • SQL 审批的状态为智能预审失败待提交审批不通过
  • 您是系统管理员或目标 SQL 审批的提交人

操作步骤

  1. 登录 NineData 控制台

  2. 在左侧导航栏,单击 数据库 DevOps>SQL 代码审核

  3. SQL 代码审核页面,找到目标 SQL 代码审核任务,单击任务 ID 或任务右侧操作列的详情。在任务详情页右上角单击撤回

  4. 在弹出的确认窗口中,单击撤回撤回并编辑

    • 撤回:任务状态变更为已撤回。如需重新编辑任务,可以在 SQL 代码审核列表单击该 SQL 审批 ID 进入任务详情页,然后单击右上角的编辑,重新编辑任务单。
    • 撤回并编辑:任务状态变更为已撤回并自动跳转至 SQL 代码审核的编辑页面。

审批 SQL 代码审核

前提条件

  • SQL 代码审核的状态为审批中
  • 您是系统管理员或目标 SQL 代码审核的审批人

操作步骤

  1. 登录 NineData 控制台

  2. 在左侧导航栏,单击 数据库 DevOps>SQL 代码审核

  3. SQL 代码审核页面,找到目标任务单,单击任务 ID 或任务右侧操作列的详情

  4. 任务详情页面,审批目标 SQL,根据实际情况选择转交审批通过审批不通过

    操作
    说明
    转交将任务单转交给其他用户审批。
    审批通过批准申请,单击审批通过后,您可以按需输入通过原因,并单击确定
    审批不通过驳回申请,单击审批不通过后,您还需要输入不通过原因,并单击确定