数据管理DMS的DML无锁变更可以在不锁表的情况下对表进行数据变更。

背景信息

DML无锁变更功能将结合表中的主键或非空唯一键,分批对表中的目标数据进行操作,在保证执行效率的同时,尽可能地减小了对数据库性能、空间的影响。更多信息,请参见DML无锁变更

前提条件

数据库为如下类型:
  • MySQL系列:自建MySQL、RDS MySQL、PolarDB MySQL、PolarDB-X、OceanBase MySQL。
  • PostgreSQL系列:自建PostgreSQL、RDS PostgreSQL、PolarDB PostgreSQL。
  • PolarDB O引擎。
  • MariaDB。
说明 更多信息,请参见支持的数据库类型与功能

操作步骤

  1. 登录数据管理DMS 5.0
    说明 如果您需要切换到旧版数据管理DMS,单击页面右下角返回旧版,进入数据管理DMS平台。具体操作,请参见数据管理DMS 5.0切换至旧版
  2. 在顶部菜单栏中,选择数据库开发 > 数据变更 > 无锁变更
    说明 如果您使用的是旧版数据管理DMS,在顶部菜单栏中,选择全部功能 > 数据方案 > 变更 > 无锁变更
  3. 配置数据变更工单的相关信息。
    表 1. 数据变更参数说明
    参数名 说明
    数据库(必填) 选择目标数据库。
    说明 您需要有该库的变更权限,若您只有目标数据库的只读权限或只有表的变更权限则无法提交工单。更多信息,请参见查看我的权限
    原因类别(必填) 选择数据变更的原因,方便后续查找。
    业务背景(必填) 详细描述变更原因或目标,减少沟通成本。
    执行方式(必填) 默认为审批通过后,提交者执行,可选审批通过后,自动执行最后审批人执行
    变更SQL(必填) 可直接执行的SQL语句,产品在提交时会自动校验语法正确性,不正确则阻断无法提交。
    说明
    • 请在此输入DML(Data Manipulation Language),例如UPDATEDELETEINSERT_SELECT。若您在此次输入DDL(Data Definition Language),请参见DDL无锁变更
    • 暂不支持在工单中指定事务。
    回滚SQL(选填) 可直接执行回滚操作的SQL语句,即数据变更脚本对应的逆向脚本。支持的选项为:
    • 文本:在SQL文本框中输入。
    • 附件:单击上传文件进行上传,支持TXT、SQL文件类型。
    变更相关人(选填) 设置的相关人员都可查看工单,并协同工作,非相关人员则不能查看工单(管理员、DBA除外)。
    工单附件(选填) 您可以上传图片或文档对本次的数据变更操作进行补充说明。
  4. 单击提交申请
    系统将执行SQL预检查。
  5. 可选:单击分批执行配置按钮,设置以下参数,单击提交修改
    配置 说明
    分批大小(行数) 每个分批的大小(默认为1000行)。系统将根据索引(正序)进行分批。
    每1万行sleep时间(秒) 每执行1万行后的暂停时间(默认为0.5秒)。
    是否开启主备延迟检查 支持的选项:
    • 开启(默认):DMS将主库、与备库之间的延迟,若延迟大于阈值,将暂停执行SQL,等待主、备库同步。

      开启后,您还需配置主备延迟阈值参数。

    • 关闭
    主备延迟阈值(秒) 填入主备延迟阈值,默认为10秒。

    该参数仅在开启主备延迟检查时显示。

    是否开启剪枝优化 可减少不必要遍历的一种优化算法,支持的选项:
    • 开启:若当前批次没有待变更(UPDATEDELETE)的数据,则中断后续的遍历(即中断整个任务)。
      说明 适用于主键是id递增的表,可避免扫描多余的数据。
    • 关闭(默认)
  6. 单击提交审批,等待审批通过。
    说明
    • 在提交审批前,您可以修改工单内容和定时配置;提交审批后,您将不能修改相关信息。
    • 您可以在工单详情页的审批区域查看审批进展。
  7. 待工单审批后,在工单详情页中,单击执行变更,并配置执行参数。
    说明 在创建工单时,若执行方式选择为审批通过后,自动执行,系统会自动跳过此步骤。
    配置项 说明
    是否立即执行 选择是否立即执行,支持的选项:
    • 立即执行(默认):提交即刻执行。
    • 定时执行:按需指定特定时间执行该任务。
    指定结束时间 支持的选项:
    • 开启:按需指定任务的结束时间,系统在时间到达后将不再执行未完成的SQL,该功能主要为了防止在高峰期影响业务的运作。
    • 关闭(默认)
  8. 单击确定执行
    在执行过程中(执行成功后),您可以单击详情调度详情查看任务进展、执行日志详细(执行语句、执行所用时间、调度详情等信息)。正在执行