- 文档首页
数据库工作台
MySQL 用户指南
数据管理
工单列表
数据变更工单
创建无锁数据变更工单
创建无锁数据变更工单
数据库工作台 DBW 提供无锁数据变更功能,该功能可以将单条 SQL 语句拆分成多个批次执行,适用于大量数据变更的场景,例如清理历史数据、备份大量数据等,可以提高数据库的性能和可扩展性。本文介绍如何在 DBW 控制台创建无锁数据变更工单。
前提条件
- 已创建云数据库 MySQL 版实例和账号。详细操作,请参见创建实例和账号。
- 已添加为 DBW 角色的用户。详细操作,请参见添加用户。
- 已授予添加为 DBW 角色用户相关权限。详细操作,请参见权限管理。
使用限制
- 在创建无锁数据变更工单时,选择的表需要有非空唯一索引或主键。
- 在创建无锁数据变更工单时,SQL 文本中只能包含一条 SQL 语句。
- 仅支持选择开启安全管控的实例创建数据变更工单进行纳管。
- 仅支持在 DBW 用户管理内添加的用户创建工单。
- 支持的 SQL 类型包括 UPDATE、INSERT_SELECT 和 DELETE。关于 SQL 类型的具体限制如下表所示。
适用场景
- 单条 SQL 事务太大,超出 Binlog 的限制。
优势
无锁数据变更可以提高数据库的性能和可扩展性,具体如下所示:
- 性能高:无锁数据变更在进行数据读取时不会加锁,减少了锁的开销,能够提高系统的处理性能和并发量。
- 可扩展性强:无锁数据变更通过减少锁定,提高了系统的扩展性,使得系统能够处理更多的并发用户和事务。
执行原理
- 分批执行单条 SQL:数据库工作台 DBW 将单条 SQL 拆分成多个批次执行。默认情况下,按照主键从小到大的顺序分批执行,直到扫描完所有行。
- 每个批次执行后有 sleep(暂停)时间进行缓冲。
操作步骤
- 在弹出的对话框中,选择数据变更 > 无锁数据变更。
- 在创建无锁数据变更工单的控制面板,配置以下参数信息。
- 在工单预检查配置向导页面,可查看包括语法检查、安全规则检查、权限检查和影响行数(系统统计值,实际影响行数仍然以 SQL 执行为准)预检查项。
- 检查通过:表示预设的检查项均满足要求,不存在任何风险及不合规项。
- 待确认:表示检测到非阻断性问题或潜在风险,不过不影响工单的核心执行逻辑。系统建议予以关注,但允许继续操作。您需手动确认并忽略提示项,才可继续提交工单。
- 未通过:表示存在阻断性问题,若继续执行,可能会导致失败、数据丢失或系统异常。您可以单击检查项的结果详情列中的查看详情,查阅未通过的具体原因,修复后重新创建工单。
说明
- 如遇预检查未通过的情况,您可以单击检查项的结果详情列的查看详情,查阅未通过的具体原因,并在修复后重新创建工单。
- 若您的账号为主账号,在语法检查和影响行数预检查均通过,但安全规则检查或权限检查未通过的情况下,可直接单击确定创建工单。
- 若您的账号为子用户,在语法检查、影响行数预检查和权限检查均通过,且安全规则检查中无高预警检查项未通过的情况下,可直接单击确定创建工单。
后续操作
工单提交后,您可在工单详情的执行工单配置向导页面实时查看整体执行进度、已执行 SQL 数量以及每条 SQL 的执行状态、影响行数、执行日志等详细信息。详细信息,请参见管理数据变更工单。 最近更新时间:2026.09.01 14:01:59