MariaDB10.3 增补AliSQL补丁---安全执行Online DDL
admin
2023-04-21 15:43:05
0

Online DDL从名字上看很容易误导新手,以为不论什么情况,修改表结构都不会锁表,理想很丰满,现实很骨感,注意这个坑!


有以下两种情况执行DDL操作会锁表的,Waiting for table metadata lock(元数据表锁)

1、增加、删除字段或索引不会锁全表,删除主键、更改字段属性会锁全表,见下图所示:MariaDB10.3 增补AliSQL补丁---安全执行Online DDL


2、在添加字段alter table表时,对该表的增、删、改、查均不会锁表。而在这之前,该表有被访问时,需要等其执行完毕后,才可以执行alter table例如在会话一,故意执行一条大结果的查询,然后在会话二执行增加字段age,此时还会出现表锁,如下图所示:

MariaDB10.3 增补AliSQL补丁---安全执行Online DDL


针对第二种情况,MariaDB10.3 增补AliSQL补丁-DDL FAST FAIL,让其DDL操作快速失败。

语法为:

ALTER TABLE tbl_name [WAIT n|NOWAIT] ...
CREATE ... INDEX ON tbl_name (index_col_name, ...) [WAIT n|NOWAIT] ...
DROP INDEX ... [WAIT n|NOWAIT]
DROP TABLE tbl_name [WAIT n|NOWAIT] ...
LOCK TABLE ... [WAIT n|NOWAIT]
OPTIMIZE TABLE tbl_name [WAIT n|NOWAIT]
RENAME TABLE tbl_name [WAIT n|NOWAIT] ...
SELECT ... FOR UPDATE [WAIT n|NOWAIT]
SELECT ... LOCK IN SHARE MODE [WAIT n|NOWAIT]
TRUNCATE TABLE tbl_name [WAIT n|NOWAIT]


例:

MariaDB10.3 增补AliSQL补丁---安全执行Online DDL

如果线上有某个慢SQL对该表进行操作,可以使用WAIT n(以秒为单位设置等待)或NOWAIT在语句中显式设置锁等待超时,在这种情况下,如果无法获取锁,语句将立即失败。 WAIT 0相当于NOWAIT。


参考:https://jira.mariadb.org/browse/MDEV-11388





相关内容

热门资讯

【第一资讯】“微信麻将真的有挂... 网上科普关于“微信麻将有没有挂”话题很是火热,小编也是针对微信麻将作*弊开挂的方法以及开挂对应的知识...
今日重大通报“快乐打筒子辅助器... 今日重大通报“快乐打筒子辅助器?”(确实真的有挂)您好,快乐打筒子这个游戏其实有挂的,确实是有挂的,...
终于明白“天天微友棋牌是不是有... 终于明白“天天微友棋牌是不是有挂?”(必胜开挂神器)您好,天天微友棋牌这个游戏其实有挂的,确实是有挂...
我来教教您“大头十三水有挂吗?... 我来教教您“大头十三水有挂吗?”(透视曝光猫腻)您好,大头十三水这个游戏其实有挂的,确实是有挂的,需...
今日重大发现“aapoker有... 有 亲,根据资深记者爆料aapoker是可以开挂的,确实有挂(咨询软件无...
今日重大发现“新超圣牛牛有挂吗... 家人们!今天小编来为大家解答新超圣牛牛透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里买...
【第一财经】“掌酷天天开心有没... 家人们!今天小编来为大家解答掌酷天天开心透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里...
今日重大发现“相约十五胡开挂神... 有 亲,根据资深记者爆料相约十五胡是可以开挂的,确实有挂(咨询软件无需打...
重磅消息“天天福建麻将可以开挂... 您好:天天福建麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款...
【今日要闻】“天天贰柒拾怎么装... 您好:天天贰柒拾这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款游...