DDL快速超时
对一些特定的DDL操作,实现了单独设置其MDL等锁时间的功能,基于此功能可以实现让这类操作在等待MDL锁时快速超时,避免阻塞后续DML操作。
约束与限制
- 内核版本为2.0.45.230900及以上版本支持使用该功能。
- 目前支持的DDL操作包括:ALTER TABLE、CREATE INDEX、DROP INDEX。
开启DDL快速超时
参数名称 |
级别 |
描述 |
rds_ddl_lock_wait_timeout |
Global,Session |
控制当前会话或者全局的DDL超时时间。
|
使用示例
- 首先开启一个客户端,执行加锁操作,示例如下。
图1 加锁操作
- 通过如下命令,查看DDL快速超时功能的状态。
show variables like "%rds_ddl_lock_wait_timeout%";
图2 查看状态
如上图所示,查询到“rds_ddl_lock_wait_timeout”的值是“31536000”,此时是默认值,相当于不开启DDL快速超时功能。如果此时等锁,就会卡在这里。
如果需要开启DDL快速超时功能,可以将这个值设置为预期值,操作请参考3。
- 设置参数。
执行如下命令,设置“rds_ddl_lock_wait_timeout”参数值。
set rds_ddl_lock_wait_timeout=1;
图3 设置参数
- 然后执行如下创建索引命令,发现DDL操作会快速超时失败,符合预期。