原子DDL操作
- MySQL8.0开始显示支持原子DDL操作,其中与表相关的原子DDL只支持InnDB存储引擎。
- 一个原子DDL操作内容包括:更新数据字典,存储引擎层的操作,在binlog中记录DDL操作。
- 支持与表相关的DDL:数据库、表空间、表、索引的CREATE,ALTSE,DROP以及TRUNCATE TABLE。
- 支持与表相关的DDL:存储程序,触发器,视图,UDF的CREATE,DROP以及ALTER语句。
- 支持其他DDL:存储程序,触发器,视图,UDF的CREATE,DROP以及ALTER语句。
- 支持账户管理相关的DDL:用户和角色的CREATE,ALTER,DROP以及适用的RENAME,以及GRANT和REVOKE语句。
我们来看一下5.7和8.0版本中这些的差异
在5.7中
先创建一张t1表,并查看一下
create table t1 (c1 int);
show tables;
再来删除这个表
drop table t1,t2;
show tables;
我们可以看到在5.7当中虽然有一部分是错误的,但是有一部分是操作成功的。
在8.0中
create table t1(c1 int);
show tables;
drop tables;
我们可以看到它不会只成功一部分,它会是一个整体要么都成功,要么都失败。
我们还可以
drop table if exists t1,t2;
运行之前会有一个判断,即使没有t2表,它只会出现一个警告而不会出现错误。
show tables;
有图可知,我们可以看到t1表被删除。
网友评论