Features Added in MySQL 8.0
定义:开源的关系型数据库管理系统
特点:快速、可靠、可扩展且易于使用
C 和 C++ 编写。
提供事务性和非事务性存储引擎
内核线程设计为完全多线程,可利用多个CPU
Mysql8.0的目前版本有8.0~8.0.28,当前阿里云版本为8.0.18,文档中较多篇幅在介绍各版本新增内容和特性,提醒我们要保持各环境DB版本要一致
MySQL 8.0 的新特性:
- 新的数据字典,带来一些好处:
- 去掉server层的元数据文件,元数据统一存储到InnoDB数据字典表,易于管理且crash-safe
- information_schema查询更高效
- 支持原子DDL
- 支持原子数据定义语句 (Atomic DDL),数据库在DDL执行期间挂了,也会提交事务,并将适用的更改保留到数据字典中,存储引擎和二进制日志,或者回滚事务。不会出现原来的DDL跑一半,表/字段显示建好了但实际用不了的情况。注意不再支持
create table t1 select * from t2;
这种语法,加上 GTID 的复制新特性,新版本下应该分为两句create table t1; insert into xxx select * from t2;
- 提升安全和帐户管理,密码策略的升级
- 默认字符集为utf8mb4,这个字符集相较于原先的utf8有扩展,可以认为是真正的utf8,推荐使用,建议数据库/表/字段的字符集统一设置为utf8mb4,Collation也建议保持一致
- JSON 增强,相较于5.7/5.6的版本有很大提升,但Json类型的数据目前还是存储在非关系型数据库居多
- 不可见索引,当表很大时,要删除一个索引是个麻烦事,而且很怕删除掉一个实际上仍在使用的索引,加回来又是一个十分耗时的事,此时则可以将索引临时设置为不可见,以观察效果,确保没问题后再真正删除。清理重复/无用索引时建议使用。
- 降序索引,在有此查询需求下可以应用。如经常有按时间倒序查询的需求