MySQL8新特性-补充点

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 重命名通用表空间。

猜你喜欢

转载自blog.csdn.net/m0_70299172/article/details/130496468