Mysql8和mysql5.7的区别有哪些

文 / @UTHEME

Mysql8和Mysql5.7都是最常用的关系型数据库之一,然而它们之间还是存在一些区别的。以下是一些重要的区别:

1. NoSQL存储

Mysql从5.7版本开始提供了NoSQL的存储功能,这在实际中很少被使用。在8.0中,NoSQL存储得到了一些修改。

2. 隐藏索引

Mysql8.0新增了隐藏索引的特性,这个特性对于性能调试来说非常有用。在8.0中,当一个索引被隐藏时,它不会被查询优化器所使用。你可以隐藏一个索引,观察对数据库的影响。如果性能下降,就说明这个索引是有效的,可以将其“恢复显示”;如果数据库性能看不出变化,说明这个索引是多余的,可以删掉了。隐藏一个索引的语法是ALTERTABLEtALTERINDEXiINVISIBLE,恢复显示该索引的语法是ALTERTABLEtALTERINDEXiVISIBLE。

3. 设置持久化

Mysql8.0新增了SETPERSIST命令,可以将该命令的配置保存到数据目录下的mysqld-auto.cnf文件中。下次启动时会读取该文件,用其中的配置来覆盖缺省的配置文件。

4. UTF-8编码

从Mysql8.0开始,数据库的缺省编码将改为utf8mb4,这个编码包含了所有emoji字符。这样我们就不用再担心因为编码问题出现乱码的情况。

5. 通用表表达式

Mysql8.0新增了通用表表达式(Common Table Expressions),这个特性在很多报表场景是很有用的。复杂的查询常常使用嵌入式表,但是使用CTE可以使得查询更加清晰。

6. 窗口函数

Mysql8.0新增了窗口函数的概念,可以用来实现若干新的查询方式。窗口函数有点像SUM()、COUNT()那样的集合函数,但它不会将多行查询结果合并为一行,而是将结果放回多行当中。例如,可以使用窗口函数对班级人数从小到大进行排名。

以上就是Mysql8和Mysql5.7的区别,这些新特性都是在优化查询性能和使用方面很有用的。如果你正在使用Mysql,可以考虑升级到最新的版本。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。