DML无锁变更

更新时间: 2023-12-27 09:37:10

若您需要在不锁表的前提下变更大量表数据,您可使用数据管理DMS的无锁变更。该功能通过将单个SQL拆分成多个批次执行,以实现不锁表进行表数据变更,同时也可以减少DML操作对数据库性能,空间等的影响。本文介绍在DMS中进行无锁数据变更的方法。

前提条件

  • 支持的数据库类型:

    • MySQL:RDS MySQLPolarDB MySQL版MyBase MySQLPolarDB分布式版、其他来源MySQL
    • PostgreSQL:RDS PostgreSQLPolarDB PostgreSQL版MyBase PostgreSQL、其他来源PostgreSQL
    • MariaDB:RDS MariaDB、其他来源MariaDB
    • OceanBase MySQL模式
    • PolarDB PostgreSQL版(兼容Oracle)
  • 实例的管控模式为稳定变更或安全协同。更多信息,请参见查看管控模式

注意事项

DML无锁变更仅支持单表、简单的SQL操作(例如UPDATE、DELETE等)。

操作步骤

  1. 登录数据管理DMS 5.0
  2. 在顶部菜单栏中,选择数据库开发 > 数据变更 > 无锁变更

    说明

    若您使用的是极简模式控制台,请单击左上角的function图标,在导航栏中选择全部功能 > 数据库开发 > 数据变更 > 无锁变更

  3. 配置无锁变更工单,配置完成后,单击提交申请。部分参数信息说明如下:

    说明

    以安全协同实例举例配置。自由操作或稳定变更管控模式的实例,在配置时仅需配置数据库与变更SQL。

    配置项

    是否必填

    说明

    数据库

    搜索并选择目标数据库。

    说明

    您需要有目标数据库的变更权限。更多信息,请参见查看我的权限

    执行方式

    选择工单的执行方式:

    • 审批通过后,提交者执行。

    • 审批通过后,自动执行。

    • 最后一个审批人执行。

    说明

    管理员可以在运维管理 > 配置管理中,修改执行方式列表。具体操作,请参见配置管理

    变更SQL

    输入DML(Data Manipulation Language),例如UPDATEDELETEINSERT_SELECT

    说明

    如果变更SQL输入的是DDL,则您进行的是DDL无锁结构变更任务。更多信息请参见通过无锁变更工单实现无锁结构变更

    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. 提交申请后,您可以开启主备延迟检查并确定阈值、修改SQL。

    • (可选)开启主备延迟检查、设置阈值。设置主备延迟检查并确定阈值,以避免主备延迟过大,从而影响主备实例切换。

      您可以在基本信息区域,单击分批执行配置,设置合理的主备延迟阈值(单位:秒)。如果主备延迟大于阈值时,将中断SQL执行。

      说明

      目前仅支持RDS MySQL数据库使用该功能。

    • (可选)修改SQL。

      提交申请后,系统将自动进行SQL预检查。如果预检查失败,您可以根据失败原因修改SQL,修改后重试。

  5. 单击提交审批。安全协同实例会根据设置的审批规则进行审批,稳定变更实例将自动通过审批。

  6. 等待审批通过后,在工单详情页的执行区域,单击执行变更

    说明

    您可以在工单详情页的审批区域,查看审批进展。

  7. 配置任务执行参数。

    配置项

    说明

    执行策略

    • 立即执行:系统默认,单击确认执行后立即执行工单任务。

    • 定时执行:选择任务开始执行时间。单击确认执行后,在指定的时间执行该任务。

    指定结束时间

    • 开启:选择任务结束时间。如果任务在指定结束时间之前没有执行完毕,则系统将不再继续执行未完成的SQL任务,防止高峰期执行任务,影响业务运作。

    • 关闭:系统默认。

  8. 单击确定执行

    说明

    已暂停的任务重启后,会重新开始执行任务。

    您可以在执行区域,查看任务执行状态、任务设置、详情和调度日志。

相关文档

常见问题

Q:无锁数据变更是否支持复杂的SQL操作?

A:不支持。例如CREATE_INDEX和多表操作(例如DELETE语句中包含JOIN)。更多支持的SQL类型,请参见使用限制

阿里云首页 数据管理 相关技术圈