加入收藏 | 设为首页 | 会员中心 | 我要投稿 大连站长网 (https://www.0411zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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

发布时间:2022-07-05 06:04:12 所属栏目:MySql教程 来源:互联网
导读:Online DDL从名字上看很容易误导新手,以为不论什么情况,修改表结构都不会锁表,理想很丰满,现实很骨感,注意这个坑! 有以下两种情况执行DDL操作会锁表的,Waiting for table metadata lock(元数据表锁) 1、增加、删除字段或索引不会锁全表,删除主键
  Online DDL从名字上看很容易误导新手,以为不论什么情况,修改表结构都不会锁表,理想很丰满,现实很骨感,注意这个坑!
 
  有以下两种情况执行DDL操作会锁表的,Waiting for table metadata lock(元数据表锁)
 
  1、增加、删除字段或索引不会锁全表,删除主键、更改字段属性会锁全表,
 
  2、在添加字段alter table表时,对该表的增、删、改、查均不会锁表。而在这之前,该表有被访问时,需要等其执行完毕后,才可以执行alter table,例如在会话一,故意执行一条大结果的查询,然后在会话二执行增加字段age,此时还会出现表锁,如下图所示:
 
  针对第二种情况,MariaDB10.3 增补AliSQL补丁-DDL FAST FAIL,让其DDL操作快速失败。
 MariaDB10.3 增补AliSQL补丁 安全执行Online 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]

(编辑:大连站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!