MySQL 8.0简介

MySQL 8.0.0于2016年9月12日发布,这是一个开发里程碑版本。MySQL 8.0的前一个版本是 MySQL 5.7,官方表示MySQL 8.0的速度要比MySQL 5.7快2倍, MySQL 8.0为读/写工作负载、 I/O密集型工作负载和高竞争“热点”工作负载提供了更好的性能。更多关于MySQL 8.0的信息请参考https://dev.mysql.com/doc/relnotes/mysql/8.0/en /

MySQL 8.0的新特性

新特性/改进

描述

默认字符集变为utf8mb4

移动端有大量的表情符号需要存储,默认的字符集从 latin-1 转为 utf8mb4。

系统表存储引擎全部为InnoDB

不再采用MyISAM。

DDL原子化

在MySQL 8.0之前,DDL操作是非原子型操作,在执行过程中遇到实例故障重启,可能导 致DDL没有完成也没有回滚。

持久化系统参数

可以用 SET PERSIST 来设置持久性的全局变量,即便服务器重启也会保持下来。

不可见索引

可以将一些索引设置为不可见,这样 SQL 优化器就不会用到它,但是它会继续在后台保持 更新。当有需要时,可以随时恢复可见。 不可见的索引可以测试删除索引对查询性能的影响,而无需进行破坏性的更改。

全新的身份认证方式

身份认证方式由以前的mysql_native_password改为caching_sha2_password。

通用表表达式

通用表表达式(CTE)是一个在语句级别定义的临时结果集。定义之后,可以在当前语句中 多次引用该 CTE。CTE有两种用法,非递归的CTE和递归的CTE。

窗口函数

类似于聚合函数,可降低代码复杂性并帮助开发人员提高工作效率。

JSON扩展

从版本5.7.8开始,MySQL开始支持JSON数据类型。 MySQL8.0新增了JSON_TABLE()函数,可以将JSON数据转换成表。

GIS增强

GIS得到了增强,可支持地理和空间参考系统(SRS)。

文档存储

可以使用同一种解决方案处理 SQL 和 NoSQL,也可以将两种的优势结合起来。