支持存储Json
这一块是MySQL8.0新特性中比较值得深入研究应用到系统中的部分。我们系统中已经有一些字段存储了Json,像Tariff这边有snapshot,interface result的housekeep,download criteria等等,这些值的存储和使用都比较麻烦,有些地方还需要反序列化。支持了Json之后可以在DB层面完成了数据的提取,可以节约service的性能
用户管理和安全
- MySQL8.0之后,系统的用户授权表引擎从MyISAM改到了InnoDB,此后对用户的授权操作将会变成事务性的
- 支持新的身份认证插件
- 支持用户角色
- 维护密码的历史记录信息,限制重复使用之前的密码
资源管理
支持床架和管理资源组,将服务器线程分配给特定的资源组
表加密
支持通过全局参数控制表的加密
InnoDB
- auto_increment字段的当前最大值将写入日志中做持久化管理。
- 新增了变量innodb deadlock detect用于检测思索,和innodb lock wait timeout结合使用在死锁时让事务回滚
- 支持原子DDL
- DDL新增ALGORIGTHM=INSTANT,就是我们一直在使用的快速加字段
- 新增了表统计直方图
- create table ... select 将作为一个事务记录在二进制文件中。这里非常奇怪,之前碰到的坑是跑了一句create table select报错,后来查下来是因为默认开启了gtid mode,官方文档却写说mysql8支持与gtid复制一起使用。
Optimizer
- 支持降序索引
- 支持不可见索引
- 函数索引
- where 1=1这种直接在准备期间删除
后面继续Optimizer吧,太长了。不知道为什么一个what’s new花了很大的篇幅讲Json。之前有一段时间,很多公众号一起推MySQL的JSON和redis的对比,这种噱头推送我是不会点进去的,不过也确实说明了Json是MySQL8的一个大升级