You need to enable JavaScript to run this app.
文档中心
数据库工作台

数据库工作台

复制全文
下载 pdf
数据变更工单
创建无锁结构变更工单(OnlineDDL)
复制全文
下载 pdf
创建无锁结构变更工单(OnlineDDL)
创建结构变更工单时,默认采用 OnlineDDL 的方式执行 SQL 命令。通过 OnlineDDL 工单可以协助您规避数据库锁表而导致的 DDL 或查询阻塞问题。本文介绍如何在数据库工作台 DBW 控制台创建无锁结构变更工单即 OnlineDDL 工单。
前提条件
  • 已添加为 DBW 角色的用户。详细操作,请参见添加用户
  • 已授予添加为 DBW 角色用户相关权限。详细操作,请参见权限管理
注意事项
  • 在创建无锁结构变更工单时,选择的表需要有主键。
  • 仅支持选择开启安全管控的实例创建无锁结构变更工单进行纳管。
  • 仅支持在 DBW 用户管理内添加的用户创建工单。
  • 支持在单条 ALTER TABLE 语句中批量执行多项变更操作,但不支持直接使用 CREATE INDEXDROP INDEX 语句,相关索引操作需通过 ALTER TABLE 语法来实现。具体语法信息,请参见参考文档
  • 创建无锁结构变更工单前需确保数据库实例中没有持有锁,否则将阻塞无锁结构变更工单的执行。
  • OnlineDDL 执行期间请勿手动执行其他 DDL,否则可能会导致手动执行的 DDL 结果被覆盖。
  • 在无锁结构变更工单中,建议数据库和表的字符串总长度不超过 52 个、单表的字符串长度不超过 49 个字符,否则可能会导致 SQL 语句执行失败或引起数据库系统运行时错误。
  • 不支持通过无锁结构变更工单进行 HTAP 表的结构变更。同时,也不支持通过无锁结构变更工单将普通表变更为 HTAP 表。
  • 无锁结构变更的切表操作可能会触发表锁,造成业务请求阻塞;切表时长事务默认会被终止。建议切表时间设置在业务低峰期,避免对业务造成影响。
  • 系统同一时间仅支持一个工单处于执行状态。
  • 强制忽略策略
  • 可忽略的校验项:预检查中,以下校验项若出现未通过、待确认或告警,均支持通过“强制忽略”按钮跳过:
  • SQL 相关校验:语法检查、DryRun 检查、库表检查、剩余空间检查、唯一键检查等。
  • 其他校验:实例检查、DTS 任务检查、Explain 检查。
  • 不可忽略的校验项:以下校验项为硬性条件,必须通过后才能提交工单,不支持强制忽略:
  • 权限检查:确保提交人具备执行变更所需的权限。
  • DDL 建议:确保变更语句安全、规范,且当前数据库环境能够承受该变更。
  • 安全检查:确保 SQL 未违反数据库中的安全要求和最佳实践。
  • 执行限制:强制忽略后,工单不支持自动执行和定时执行,审批通过后需手动执行。
  • 模式限制:无法解析的 SQL 仅支持无锁模式执行,不支持 Instant DDL。
  • 数据风险:若 SQL 涉及添加唯一索引,请确保目标列无重复数据,否则执行后重复记录仅保留一条,其余将被丢弃。
预检查
检查项
检查内容
检查结果可忽略
备注
语法检查
确保您提交的 SQL 语句在语法上完全正确、符合数据库规范,能够被系统正常解析和执行。
是(强制忽略)
Online DDL DryRun 检查
在不触碰任何真实数据的前提下,提前模拟并推演整个无锁变更的完整流程,确保变更方案的可行性与安全性。
是(强制忽略)
Online DDL 库表检查
检查库表中是否存在主键或唯一索引。
是(强制忽略)
Online DDL 剩余空间检查
检查数据库实例的磁盘空间是否足以承载变更过程中产生的临时数据,避免因空间耗尽导致变更失败,甚至引发数据库实例崩溃。
是(强制忽略)
Online DDL 添加唯一键检查
检查目标列(或列组合)中是否存在完全相同的值。
是(强制忽略)
  • 建议在业务低峰期执行,以降低对线上服务的潜在影响。
安全检查
检查在创建无锁结构变更工单里的 SQL 是否违反数据库中的安全要求和最佳实践。
详细信息,请参见安全规则
权限检查
确保提交工单的提交人是否具备执行变更所需的权限,防止出现不规范的变更风险。
详细信息,请参见权限管理
实例检查
检查实例的运行状态和是否已存在在运行中的 OnlineDDL 工单。
是(强制忽略)
Explain 检查
提前精准分析您提交的 DDL 语句在数据库底层的实际执行机制,进而评估语句是否执行同时预估影响行数。
是(强制忽略)
DTS 任务检查
检查实例上是否存在关联的数据迁移或同步任务,以确保 OnlineDDL 变更期间数据同步链路的安全与稳定。
是(强制忽略)
DDL 建议
确保您当前提交的变更语句是安全的、规范的,并且确保当前的数据库环境能够承受该变更。
操作步骤
  1. 登录 DBW 控制台
  1. 在顶部菜单栏,选择地域。
  1. 在左侧导航栏,选择数据管理 > 工单列表
  1. 工单列表页面,单击创建工单
  1. 在弹出的对话框中,选择数据变更 > 无锁结构变更
  1. 创建无锁结构变更工单的控制面板,配置以下参数信息。
  • 参数
    说明
    基本信息
    创建人
    默认为当前登录的账号,且不支持修改。
    工单标题
    (可选)自定义工单标题。工单标题的长度不能超过 200 个字符。
    工单类型
    默认选择无锁结构变更,且不支持切换。结构变更表示在单条 ALTER TABLE 语句中批量执行多项变更操作语句变更数据库的结构,例如添加新的表、修改表的列等。
    说明
    默认先采用 OnlineDDL 的方式执行 SQL 命令。
    工单备注
    自定义您的工单备注,建议和您的业务相关,方便后续查找。
    库表选择
    数据库类型
    选择云数据库 veDB MySQL 版
    实例
    从下拉列表中选择需要创建无锁结构变更工单的实例。
    数据库
    从下拉列表中选择需要创建工单的数据库。
    变更配置
    执行命令
    按需设置 SQL 语句。关于结构变更支持的 SQL 语句,具体请参见参考文档
    说明
    无锁结构变更工单中,只能包含一条 SQL 语句。
    策略配置
    执行方式
    按需选择执行方式,支持以下选择:
    • 审批后自动执行:审批后将自动执行 SQL 语句。
    • 审批后手动执行:审批后需申请人自行执行工单。
    • 审批后定时执行:审批后可按指定时间执行工单。
    执行开始时间
    按需设置开始执行工单的时间。
    说明
    执行方式选择审批后定时执行时,支持设置执行开始时间
    执行结束时间
    按需开启和设置工单执行结束时间。
    说明
    执行方式选择审批后定时执行并设置了执行开始时间时,执行结束时间需晚于执行开始时间。
    DDL 语句优先执行
    开启后,系统将优先使用 OnlineDDL 方式执行变更。在最终切表阶段,若检测到阻塞 DDL 的长事务,将主动终止该事务,优先保障 DDL 顺利完成。
    长事务阈值
    设置长事务的判定时间,运行时长超过该阈值的事务将被视为长事务,并在切表阶段被主动终止。取值范围:1~10000(单位:秒),默认值为 3 秒。。在开启 DDL 语句优先执行时支持设置该参数。
    切换表的时间窗口
    按需选择切换表的时间,支持立即执行定时执行进行表的切换。
    无锁结构变更切表操作可能会触发表锁,建议切表时间设置在业务低峰期,避免对业务造成影响。
    执行窗口类型
    系统支持通过时间窗口来控制 DDL 变更的执行时机,避免在业务高峰期产生影响。
    • 允许时间窗口:仅在设定的时间段内允许执行变更(切表)。若当前时间不在设定范围内,任务将自动挂起等待。最多支持配置 5 个时间段。
    • 禁止时间窗口:在设定的时间段内禁止执行变更(切表)。除禁止时段外,其余时间均可执行。适用于需要避开特定高峰期的场景。最多支持配置 5 个时间段。
    说明
    切换表结构操作通常涉及短暂锁表,请务必将其限制在业务低峰期进行。
    全量拷贝策略和大小
    按需设置控制 OnlineDDL 过程中数据迁移阶段的执行方式和资源消耗,取值如下:
    • DBW 动态调节(推荐):系统根据当前数据库负载、表大小、磁盘 I/O 能力等实时指标,自动调整每次拷贝的数据量。例如,业务低峰期自动加大批次,高峰期自动缩小,实现“智能限速”,兼顾效率与安全。
    • 指定固定大小:您手动设定每次拷贝的行数,适用于对资源消耗有明确控制需求的场景,比如已知服务器性能瓶颈或需要严格匹配运维窗口。
    切换表完成后原表清理策略
    按需选择指定表切换成功后,系统对原表的处理方式,取值如下:
    • 直接删除无效原表(推荐):切换成功后,系统将自动删除原表,该处理方式原表数据将不可恢复,请谨慎操作。适用于确认新表数据无误,且希望立即释放存储空间。
    • 原库中保留无效原表(手工清理):切换成功后,原表将被重命名并保留在原数据库中,需由您手动删除。适用于出于安全考虑,希望保留原表作为备份,待观察一段时间确认无误后再手动清理。
    主备延迟阈值
    设置实例主备复制延迟的告警上限(单位:秒)。在数据拷贝过程中,系统会实时监测主备延迟。若延迟超过该阈值,系统将自动暂停新表的数据拷贝,以防止主库负载过高影响业务;待主备延迟恢复至阈值以下后,系统将自动恢复拷贝任务。默认值为 3 秒。
    说明
    建议根据业务对主库性能的敏感度进行调整;若业务对延迟极其敏感,可适当调低该值。
    高级配置
    • 切换表时锁表超时时间:按需设置切换表时锁表超时时间,单位为秒(s),取值范围:1~10,默认值为 5。
    • 切换表失败时重试次数:按需设置切换表失败时的重试次数,取值范围:1~30,默认值为 3。
  1. 单击下一步:预检查
  1. 工单预检查配置向导页面,可查看包括语法检查安全规则检查权限检查影响行数(系统统计值,实际影响行数仍然以 SQL 执行为准)预检查项。
  • 检查通过:表示预设的检查项均满足要求,不存在任何风险及不合规项。
  • 待确认:表示检测到非阻断性问题或潜在风险,不过不影响工单的核心执行逻辑。系统建议予以关注,但允许继续操作。您需手动确认并忽略提示项,才可继续提交工单。
  • 未通过:表示存在阻断性问题,若继续执行,可能会导致失败、数据丢失或系统异常。您可以单击检查项的结果详情列中的查看详情,查阅未通过的具体原因,修复后重新创建工单。
说明
  • SQL 相关(如语法、DryRun、库表、剩余空间、唯一键)、实例、DTS 任务、Explain 等检查项支持强制忽略。操作路径:单击强制忽略语法检查结果,在弹出的对话框中单击确认忽略
  • 若您的账号为主账号,在语法检查和影响行数预检查均通过,但安全规则检查或权限检查未通过的情况下,可直接单击确定创建工单。
  • 若您的账号为子用户,在语法检查、影响行数预检查和权限检查均通过,且安全规则检查中无高预警检查项未通过的情况下,可直接单击确定创建工单。
  1. 单击提交工单
后续操作
参考文档
结构变更支持的 SQL 语句如下表所示。
分类
DDL 操作
变更方式
索引操作
添加唯一索引
ALTER TABLE table_name ADDUNIQUEINDEX idx_name(col_list);
添加一个二级索引
ALTER TABLE tbl_name ADD INDEX name (col_list);
删除一个索引
ALTER TABLE tb_name DROP INDEX index_name;
重命名索引
ALTER TABLE tbl_name RENAME INDEX old_index_name TO new_index_name;
添加 FullText 索引
ALTER TABLE tbl_name ADD FULLTEXT INDEX name (col_list);
添加 SPATIAL 索引
ALTER TABLE tbl_name ADD SPATIAL INDEX name (col_list);
修改索引的类型
ALTER TABLE tbl_name DROP INDEX i1, ADD INDEX i1(key_part,...) USING BTREE;
列操作
添加列
ALTER TABLE table_name ADD COLUMN col_name column_definition;
删除列
ALTER TABLE table_name DROP COLUMN col_name;
列顺序重排
ALTER TABLE tbl_name MODIFY COLUMN col_name column_definition FIRST;
设置列的默认值
ALTER TABLE tbl_name ALTER COLUMN col SET DEFAULT literal;
删除列的默认值
ALTER TABLE tbl ALTER COLUMN col DROP DEFAULT;
修改列的数据类型
ALTER TABLE tbl_name CHANGE col_name col_name new_data_type;
扩展 VarChar 类型长度-变大
ALTER TABLE tbl_name CHANGE col_name col_name VARCHAR(255);
扩展 VarChar 类型长度-变小
ALTER TABLE tbl_name CHANGE col_name col_name VARCHAR(250);
修改列的 auto-increment
ALTER TABLE table AUTO_INCREMENT=next_value;
设置列为 NULL
ALTER TABLE tbl_name MODIFY COLUMN column_name data_type NULL;
设置列 NOT NULL
ALTER TABLE tbl_name MODIFY COLUMN column_name data_type NOT NULL;
修改 ENUM 或者 SET 列的定义
ALTER TABLE t1 MODIFY COLUMN c1 ENUM('a', 'b', 'c', 'd');
外键操作
新增外键限制
ALTER TABLE tbl1 ADD CONSTRAINT fk_name FOREIGN KEY(col1)
REFERENCES tbl2(col2) referential_actions;
删除外键限制
ALTER TABLE tbl DROP FOREIGN KEY fk_name;
表操作
变更表字符集
ALTER TABLE `test_db`.`user` CHARACTER SET = utf8mb4, COLLATE = utf8mb4_bin;
修改 ROW_FORMAT
ALTER TABLE tbl_name ROW_FORMAT = row_format;
说明
row_format 的取值范围包括 REDUNDANTCOMPACTDYNAMIC
修改 KEY_BLOCK_SIZE
ALTER TABLE tb_name KEY_BLOCK_SIZE=key_block_size;
设置字符集
ALTER TABLE tbl_name CHARACTER SET = charset_name;
convert 字符集
ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
FORCE 重建表
ALTER TABLE tbl_name FORCE;
最近更新时间:2026.09.01 14:01:58
这个页面对您有帮助吗?
有用
有用
无用
无用