1,原子DDL操作
MySQL 8.0 开始支持原子 DDL 操作,其中与表相关的原子 DDL 只支持 InnoDB 存储引擎。一个原子 DDL 操作内容包括:更新数据字典,存储引擎层的操作,在 binlog 中记录 DDL 操作。支持与表相关的 DDL:数据库、表空间、表、索引的 CREATE、ALTER、DROP 以及 TRUNCATE TABLE。支持的其他 DDL :存储程序、触发器、视图、UDF 的 CREATE、DROP 以及ALTER 语句。支持账户管理相关的 DDL:用户和角色的 CREATE、ALTER、DROP 以及适用的 RENAME,以及 GRANT 和 REVOKE 语句。
drop table t1,t2;
上面这个语句,如果只有t1表,没有t2表。在MySQL5.7与8 的表现是不同的。
5.7会删除t1表。而在8中因为报错了,整个是一个原子操作,所以不会删除t1表。
2, JSON增强
具体看官网信息,英文好的直接看,英文不好的找个翻译工具即可看懂
MySQL :: MySQL 8.0 Reference Manual :: 11.5 The JSON Data Type
3,InnoDB其他改进功能
自增列持久化
MySQL 5.7 以及早期版本,InnoDB 自增列计数器(AUTO_INCREMENT)的值只存储在内存中。MySQL 8.0 每次变化时将自增计数器的最大值写入 redo log,同时在每次检查点将其写入引擎私有的系统表。解决了长期以来的自增字段值可能重复的 bug。
死锁检查控制
MySQL 8.0 (MySQL 5.7.15)增加了一个新的动态变量,用于控制系统是否执行 InnoDB 死锁检查。对于高并发的系统,禁用死锁检查可能带来性能的提高。
innodb_deadlock_detect
锁定语句选项
SELECT ... FOR SHARE 和 SELECT ... FOR UPDATE 中支持 NOWAIT、SKIP LOCKED 选项。对于 NOWAIT,如果请求的行被其他事务锁定时,语句立即返回。对于 SKIP LOCKED,从返回的结果集中移除被锁定的行。
InnoDB 其他改进功能。
-
支持部分快速 DDL,ALTER TABLE ALGORITHM=INSTANT;
-
InnoDB 临时表使用共享的临时表空间 ibtmp1。
-
新增静态变量 innodb_dedicated_server,自动配置 InnoDB 内存参数:innodb_buffer_pool_size/innodb_log_file_size 等。
-
默认创建 2 个 UNDO 表空间,不再使用系统表空间。
-
支持 ALTER TABLESPACE ... RENAME TO 重命名通用表空间。