当业务累积了大量数据时,需要对在线数据与历史数据进行分隔管理,或定期清除表中数据。DMS的无锁数据变更功能将结合表中的主键或非空唯一键,分批对表中的目标数据进行操作,在保证执行效率的同时,尽可能地减小了对数据库性能、空间的影响。

注意事项

无锁数据变更仅支持单表、简单的SQL操作(例如SELECT、UPDATE、DELETE等),不支持多表操作(例如DELETE语句中包含JOIN)。

操作步骤

本示例通过无锁数据变更功能将big_table表中的long_text_b字段的数据批量改为random long text

  1. 普通用户提交工单。
    1. 以普通用户账号登录数据管理DMS 5.0
    2. 在页面顶部,选择数据库开发 > 数据变更 > 无锁变更
    3. 配置如下信息,并单击提交申请wu-delete-key
      参数名是否必填说明
      数据库选择poc_dev库。
      关联迭代单击选择/切换迭代,在目标迭代名称的操作列,单击关联,关联迭代。
      原因类别选择数据变更的原因,方便后续查找。
      业务背景详细描述变更原因或目标,减少沟通成本。
      执行方式选择工单的执行方式:
      • 审批通过后,提交者执行。
      • 审批通过后,自动执行。
      • 最后一个审批人执行。
      说明 管理员可以在运维管理 > 配置管理中,修改原因类别列表。具体操作,请参见配置管理
      变更SQL输入如下UPDATE语句。将big_table表中的long_text_b字段的数据批量改为random long text
      UPDATE `big_table` SET `long_text_b` = 'random long text' WHERE id < 1000000;
      SQL文本若变更SQL选择了文本,才会出现该配置项。在SQL文本框中,输入可直接执行的SQL语句。
      说明
      • 多条SQL之间, 请用英文分号(;)隔开。
      • 提交工单时会自动校验SQL语法正确性,不正确则无法提交。
      附件若变更SQL选择了附件,才会出现该配置项。上传变更SQL附件。
      说明 附件仅支持.txt、.zip和.sql的文件类型,最大不能超过15 MB。
      回滚SQL可直接执行的SQL语句,变更脚本对应的逆向脚本。
      SQL文本回滚SQL选择了文本,才会出现该配置项。输入回滚SQL,回滚SQL为变更SQL对应的逆向脚本。
      附件回滚SQL选择了附件,才会出现该配置项。单击上传文件,上传回滚SQL附件。
      说明 附件仅支持.txt、.zip和.sql的文件类型,最大不能超过15 MB。
      变更相关人设置的相关人员都可查看工单,并协同工作,非相关人员则不能查看工单(管理员、DBA除外)。
      工单附件上传工单附件,补充当前工单信息。
    4. 工单详情页中,单击分批执行配置按钮,设置以下参数,单击提交修改分批执行配置
      配置说明
      分批大小(行数)填入每个分批的大小,默认为1000行。
      每1万行sleep时间(秒)填入每1万行sleep时间,默认为0.5秒。
      是否开启主备延迟检查选择是否开启主备延迟检查。
      主备延迟阈值(秒)填入主备延迟阈值,默认为10秒。
      是否开启剪枝优化选择是否为开启剪枝优化。
    5. 确认工单详情信息。
      说明 您可以在工单详情页中,查看工单的详情信息,同时系统也会对将要执行的SQL进行执行前的预检查,包括SQL语法解析、安全规则中的SQL类型校验、工单提交人的权限检查、预计检查扫描行数等。
    6. 确认信息无误且预检查通过后,单击提交审批,并在弹窗中单击确认
      重要 在提交审批前,您可以修改工单内容和定时配置,一旦提交审批后,将不能修改相关信息。
      提交审批按钮
  2. 管理员审批并执行工单。
    1. 以管理员账号登录数据管理DMS 5.0
    2. 在DMS控制台首页我的工单区域,单击待处理工单
    3. 我的工单页面,单击目标工单号
    4. 工单详情页,确认工单变更信息,单击同意确认无锁数据变更
    5. 在审批意见文本框中输入具体意见,并单击确定确认数据变更工单审批
    6. 单击执行变更,选择执行时间,并单击确定执行

      单击确定执行后,系统将自动开始执行。

      任务执行设置
      说明
      • 默认为立即执行,您也可以自行选择开始的执行时间。
      • 若您选择指定结束时间,系统在时间到达后将不再执行未完成的SQL,该功能主要为了防止在高峰期影响业务的运作。
    7. 执行区域,单击详情,并在弹窗中单击执行进度,查看任务执行进展。查看任务执行进展
  3. 管理员验证任务。
    1. 以管理员账号登录数据管理DMS 5.0
    2. 在DMS对象列表中展开poc_dev实例,双击poc_dev数据库,进入SQL Console页。
    3. 在SQL Console窗口中,输入如下查询语句,单击执行,此时发现long_text_b字段的数据已被更新。
      SELECT * FROM `big_table`;