跳到主要内容

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 更专注于处理更复杂、更高级的数据库管理任务,提高工作效率。

前提条件

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

提交 SQL 代码审核

  1. 登录 NineData 控制台

  2. 在左侧导航栏单击 >

  3. 页面,单击,根据下表进行配置。

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

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

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

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

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

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

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

查看优化建议

  1. 登录 NineData 控制台

  2. 在左侧导航栏单击 >

  3. 页面,单击目标 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 审批的

操作步骤

  1. 登录NineData 控制台

  2. 在左侧导航栏,单击 >

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

  4. 在弹出的确认窗口中,单击

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

审批 SQL 代码审核

前提条件

  • SQL 代码审核的状态为
  • 您是或目标 SQL 代码审核的

操作步骤

  1. 登录NineData 控制台

  2. 在左侧导航栏,单击 >

  3. 页面,找到目标任务单,单击任务 ID 或任务右侧列的

  4. 页面,审批目标 SQL,根据实际情况选择

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