数据库工作台 DBW 提供无锁 SQL 变更功能,该功能可以将单条 SQL 语句拆分成多个批次执行,适用于大量数据变更的场景,例如清理历史数据、备份大量数据等,可以提高数据库的性能和可扩展性。本文介绍如何在 DBW 控制台创建无锁 SQL 变更工单。
在创建无锁 SQL 变更工单时,选择的表需要有非空唯一索引或主键。
仅支持选择开启安全管控的实例创建 SQL 变更工单进行纳管。
仅支持在 DBW 用户管理内添加的用户创建工单。
支持的 SQL 类型包括 UPDATE
、INSERT_SELECT
和 DELETE
。关于 SQL 类型的具体限制如下表所示。
SQL 类型 | 限制说明 |
---|---|
|
|
INSERT_SELECT |
|
目标表为大表且更新语句时不使用索引。
单条 SQL 事务太大,超出 Binlog 的限制。
清理历史数据。
大量数据需要备份。
无锁 SQL 变更可以提高数据库的性能和可扩展性,具体如下所示:
性能高:无锁 SQL 变更在进行数据读取时不会加锁,减少了锁的开销,能够提高系统的处理性能和并发量。
可扩展性强:无锁 SQL 变更通过减少锁定,提高了系统的扩展性,使得系统能够处理更多的并发用户和事务。
分批执行单条 SQL:数据库工作台 DBW 将单条 SQL 拆分成多个批次执行。默认情况下,按照主键从小到大的顺序分批执行,直到扫描完所有行。
每个批次执行后有 sleep(暂停)时间进行缓冲。
登录 DBW 控制台。
在顶部菜单栏,选择地域。
在左侧导航栏,选择数据管理 > 工单列表。
在工单列表页面,单击创建工单。
在创建工单对话框,配置以下参数信息。
参数 | 说明 |
---|---|
创建人 | 默认为当前登录的账号,不支持修改。 |
数据库类型 | 选择云数据库 MySQL 版。 |
工单类型 | 选择无锁 SQL 变更。 SQL 变更表示通过 UPDATE 、INSERT_SELECT 和 DELETE 语句变更数据库中的数据,该变更通常用于改变数据库中的数据内容,但不会改变数据库的结构。 |
执行方式 | 按需选择执行方式,支持以下选择:
|
执行开始时间 | 按需设置开始执行工单的时间。 说明
|
执行结束时间 | 按需开启和设置工单执行结束时间。 说明 在执行方式选择审批后定时执行并设置了执行开始时间时,执行结束时间需晚于执行开始时间。 |
实例 | 从下拉列表中选择需要创建工单的实例。 |
数据库 | 从下拉列表中选择需要创建工单的数据库。 |
SQL 文本 | 按需设置 SQL 语句。单次提交多条 SQL 语句时需用英文逗号(,)隔开。SQL 变更支持的 SQL 语句包括 UPDATE 、INSERT 和 DELETE 。 |
分批执行 | 按需设置以下信息:
说明 关闭主备延迟检查,可能导致主备延迟过大,影响主备切换。 |
单击提交工单。