跳到主要内容

SQL 任务

SQL 任务是对数据库发起 SQL 操作的任务,主要包括 DDL(数据库定义语言)、DML(数据库操纵语言)等 SQL 语句。本文介绍如何使用 SQL 任务。

功能介绍

为保障数据安全,对目标数据源没有写权限的用户无法对该数据源的内容发起变更,如果您无权限或某些操作被 SQL 开发规范管控,在有变更需求的情况下,可以通过提交 SQL 任务工单实现。NineData 提供的 SQL 任务功能具有全周期的安全管控,包括提交、审批、执行、回滚等步骤。

为了防止意外情况发生或者操作失误导致数据错误,系统会在实际执行对应的 SQL 任务之前,自动备份对应变更内容的当前数据状态,当错误发生,您可以下载该备份数据手动进行数据回滚,保证数据的安全。

注意事项

  • 在商业化版本下(),请确保您的包年包月订阅未过期,否则将无法正常使用数据库 DevOps 服务。您可以在 NineData 控制台页面右上方快速查看剩余配额以及到期时间。check_quota

  • 系统自动备份的数据会保留 7 天时间,7 天后自动失效。

前提条件

  • 数据源类型必须为下列其中之一:MySQL、SQL Server、Oracle、OceanBase Oracle、DB2、PostgreSQL、Doris、SelectDB、Redis、MongoDB、达梦、人大金仓、Klustron、DWS、openGauss、GaussDB、TiDB

  • 如需使用自动备份功能,数据源类型必须为 MySQL、SQL Server、Oracle、PostgreSQL。

提交 SQL 任务

前提条件

  • 已创建或加入组织。更多信息,请参见管理组织
  • NineData 控制台处于组织模式。如何从个人模式切换组织模式,请参见切换到组织
  • 当前用户具有访问 SQL 任务模块的权限。更多信息,请参见预置角色权限列表

操作步骤

  1. 登录NineData 控制台

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

    提示

    如果未找到 ,请确认您的控制台处于组织模式。如何从个人模式切换组织模式,请参见切换到组织

  3. 页面,单击右上角的

    提示
    如果您之前没有创建过 SQL 任务,则会显示空白页。此时,请单击页面中的
  4. 页面,根据下表配置工单。

    参数
    说明
    输入 SQL 任务的名称,该名称通常包含了 SQL 语句的执行目的,为减少沟通成本,请尽量使用有意义的名称。最多支持 64 个字符。
    目标需变更数据库所在的数据源。
    |Schema需要执行 SQL 变更的数据库或 Schema。
    当前 SQL 任务审批通过后的 SQL 语句执行人。
    说明列表中的可选项取决于如下两种情况:
    • 当前数据源配置了开发规范:列表中的选项基于当前规范中配置的 规则。该规则位于 页签,如何配置开发规范,请参见编辑规范
    • 当前数据源未配置开发规范:列表中的可选项为对当前数据源有权限的用户。更多关于授权的说明,请参见配置用户权限
    输入此次变更预计会影响多少行数据。在 SQL 任务的阶段,系统会校验 SQL 实际的影响行数和输入的预估行数是否有出入,如果不一样则会进行提示。
    (可选)针对当前 SQL 任务未尽事项的说明,例如执行任务的原因,期望执行时间等。
    输入需要执行的 SQL 语句或上传包含 SQL 语句的文件。
    • :直接在文本框中输入需要执行的 SQL 语句。
    • :单击,选择并上传包含需执行 SQL 语句的文件。
      说明:上传完成后,把鼠标移动到文件名处,可在文件名右侧选择review(预览文件)或delete(删除文件)。
    (可选)针对需要对变更提供回滚预案的企业,此处输入的回滚 SQL 会记录在当前 SQL 任务中,但在当前 SQL 任务的全生命周期中不会产生任何影响,仅用于合规操作。
  5. 单击,系统会提前对 SQL 语句进行检查,排除语法错误等无法执行的情况。如果 SQL 语句有问题,会在下方出现提示,单击提示中的即可查看具体的错误信息,方便您进行定位和修改。

  6. 通过后,单击,进入页面。系统将基于当前数据源关联的 SQL 开发规范对 SQL 语句进行预审,会有如下几个结果:

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

    预审出来的问题,包含了四个类别:

    precheck_types

    • :命中了 SQL 开发规范中规范问题。
    • :命中了 SQL 开发规范中规范问题。
    • :请重点关注,由系统自动检测出来的语法问题,虽然不阻断 SQL 任务流程,但是该 SQL 可能会执行失败,请检查库、表存在性及语法正确性。
    • :命中了管理员在 SQL 开发规范中配置的如下两个规则,SQL 任务流程被阻断。
      • :用于允许或禁用结构变更类型的 SQL 语法。
      • :用于允许或禁用数据变更类型的 SQL 语法。
  7. 在页面右上角单击,在弹出的窗口中选择流程审批人员,单击

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

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

    • :撤回 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 或任务右侧列的。在页右上角单击

    提示

    您也可以单击任务右侧列的more>

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

    • :任务状态变更为。如需重新编辑任务,可以在 列表找到该 SQL 任务,单击右侧列下的,重新编辑任务单。
    • :任务状态变更为并自动跳转至 SQL 任务的编辑页面。

审批 SQL 任务

前提条件

  • SQL 任务的状态为
  • 您是目标 SQL 任务的

操作步骤

  1. 登录NineData 控制台

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

    提示

    如果未找到 ,请确认您的控制台处于组织模式。如何从个人模式切换组织模式,请参见切换到组织

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

  4. 页面,审批页签中的内容,根据实际情况选择

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

执行 SQL 任务

SQL 任务的状态处于时,您可以执行 SQL 任务。

前提条件

  • SQL 任务的状态为
  • 您是目标 SQL 任务的

操作步骤

  1. 登录NineData 控制台

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

    提示

    如果未找到 ,请确认您的控制台处于组织模式。如何从个人模式切换组织模式,请参见切换到组织

  3. 页面,单击目标状态为的任务 ID。

  4. 页面,单击右上角的

  5. 在弹出的窗口中,选择,单击

    操作
    说明
    • :SQL 执行过程中如果出错,则立即终止执行。
    • :SQL 执行过程中如果出错,则忽略该错误,继续往下执行。
    SQL 任务默认会在执行之前针对需要变更的内容进行备份,以防止执行出错后对业务造成影响。支持如下两个选项:
    • :无论备份成功与否,都继续执行当前 SQL 任务。
    • :备份失败后,不执行当前 SQL 任务。
    • :马上执行 SQL 语句。
    • :选择一个时间执行 SQL 语句。
    • :手动执行 SQL 任务单中的 SQL,并单击。您也可以单击手动执行该 SQL。
  6. 任务状态变更为,如果您不需要系统帮您备份执行前数据,可以单击右上角的并单击,等待任务状态变更为即可。

暂停 SQL 任务

SQL 任务的状态处于时,您可以暂停该 SQL 任务。

前提条件

  • SQL 任务的状态为
  • 您是或目标 SQL 任务的

操作步骤

  1. 登录NineData 控制台

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

    提示

    如果未找到 ,请确认您的控制台处于组织模式。如何从个人模式切换组织模式,请参见切换到组织

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

重启 SQL 任务

SQL 任务的状态处于时,您可以重启该 SQL 任务。

前提条件

  • SQL 任务的状态为
  • 您是或目标 SQL 任务的

操作步骤

  1. 登录NineData 控制台

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

    提示

    如果未找到 ,请确认您的控制台处于组织模式。如何从个人模式切换组织模式,请参见切换到组织

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

  4. 在弹出窗口中,选择,单击

    操作
    说明
    • :SQL 执行过程中如果出错,则立即终止执行。
    • :SQL 执行过程中如果出错,则忽略该错误,继续往下执行。
    SQL 任务默认会在执行之前针对需要变更的内容进行备份,以防止执行出错后对业务造成影响。支持如下两个选项:
    • :无论备份成功与否,都继续执行当前 SQL 任务。
    • :备份失败后,不执行当前 SQL 任务。
    • :马上执行 SQL 语句。
    • :选择一个时间执行 SQL 语句。

下载备份数据

当 SQL 任务执行出错,需要将数据恢复到执行前的状态时,您可以下载目标 SQL 任务的备份数据,并手动回滚数据。

前提条件

  • SQL 任务的对象数据源类型为 MySQL、Oracle。
  • 目标 SQL 任务的数据备份状态为
  • 您是或目标 SQL 任务的
  • 备份文件未超过 7 天。

操作步骤

  1. 登录NineData 控制台

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

    提示

    如果未找到 ,请确认您的控制台处于组织模式。如何从个人模式切换组织模式,请参见切换到组织

  3. 页面,单击目标 SQL 任务 ID。

  4. 单击页面上半部分的,并单击右侧的

  5. 下载后的备份文件是一个 .zip 压缩文件,里面包含了回滚用的 SQL 文件,您可以再次通过提交 SQL 任务上传该文件进行数据回滚操作。更多信息,请参见提交 SQL 任务

查看 SQL 任务列表

  1. 登录NineData 控制台

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

    提示

    如果未找到 ,请确认您的控制台处于组织模式。如何从个人模式切换组织模式,请参见切换到组织

  3. 页面,即可查看所有 SQL 任务。任务过多的情况下,您可以通过如下搜索方式进行任务过滤,快速定位到目标任务。

    • 根据任务的流程节点
    • 根据任务的状态
    • 根据数据源
    • 根据日期
    • 根据任务名称或 ID
    • 根据库名

NineData OnlineDDL

NineData 的 SQL 任务支持 NineData OnlineDDL 功能,该功能可以在不阻塞表正常读写的情况下,对该表执行结构变更。更多信息,请参见使用 NineData OnlineDDL 对表结构进行无锁变更