1.系统表全部为InnoDB表
从MySQL 8.0开始,系统表全部换成事务型的InnoDB表,默认的MySQL实例将不包含任何MyISAM表,除非手动创建MyISAM表。
2.默认字符集改为utf8mb4
在MySQL 8.0版本之前,默认字符集为latin1,utf8字符集指向的是utf8mb3。网站开发人员在数据库设计的时候往往会将编码修改为utf8字符集。如果遗忘修改默认的编码,就会出现乱码的问题。从MySQL 8.0开始,数据库的默认编码改为utf8mb4,从而避免了上述的乱码问题。(比如图片表情的存储)
3.自增变量的持久化
在MySQL 8.0之前,自增主键AUTO_INCREMENT的值如果大于max(primary key)+1,在MySQL重启后,会重置AUTO_INCREMENT=max(primary key)+1,这种现象在某些情况下会导致业务主键冲突或者其他难以发现的问题。
在MySQL 5.7系统中,对于自增主键的分配规则,是由InnoDB数据字典内部一个计数器来决定的,而该计数器只在内存中维护,并不会持久化到磁盘中。
MySQL 8.0将自增主键的计数器持久化到重做日志中。每次计数器发生改变,都会将其写入重做日志中。如果数据库重启,InnoDB会根据重做日志中的信息来初始化计数器的内存值。为了尽量减小对系统性能的影响,计
MySQL 8.0 新特性详解

MySQL 8.0引入了许多新特性,包括系统表全部转为InnoDB,默认字符集改为utf8mb4避免乱码问题,自增变量持久化防止重启后冲突,新增加密函数提高数据安全性,引入窗口函数简化复杂查询,GROUP BY不再隐式排序,通用表表达式(CTE)提升查询效率,DDL操作原子化保证事务完整性,以及支持降序索引增强索引灵活性。
最低0.47元/天 解锁文章
928

被折叠的 条评论
为什么被折叠?



