mysql8.0和mysql5.7的区别是什么?MySQL 8.0和mysql5.7的区别是什么?,区别: MySQL 8.0的索引可以隐藏和显示。当一个索引被隐藏时,它将不会被查询优化; 2使用。mysql8.0增加了“SET PERSIST”命令;3.从mysql8.0开始,数据库的默认编码将改为utf8mb4,包含所有表情字符。
(推荐教程: MySQL视频教程
1. NoSql存储
Mysql从5.7版本,提供了NoSQL的存储功能,这部分在8.0中已经修改过了,但实际上很少用到
2.隐藏索引
隐藏索引的功能对于性能调试非常有用。在8.0中,可以隐藏和显示索引。当一个索引被隐藏时,它将不会被查询优化使用
也就是说,可以隐藏一个索引,然后观察对数据库的影响。如果性能下降,说明指标有效,可以“恢复”;如果数据库的性能没有变化,这意味着有更多的索引可以删除
隐藏索引的语法
ALTER TABLE t ALTER INDEX I INVIDEX;要继续显示索引,语法如下:
ALTER TABLE t ALTER INDEX i VISIBLE当一个索引被隐藏时,我们可以从show index命令的输出摘要中看到,该索引的可见属性值是No
* *注意:**隐藏索引时,其内容仍像正常索引一样实时更新。此功能专门用于优化调试。如果长时间隐藏一个索引,最好是杀死它,因为索引的存在会影响数据的插入\更新和删除功能。
3.设置持久化
MySQL设置可以在运行时通过SET GLOBAL命令进行更改,但这种更改只是暂时生效,下次启动时会从配置文件中读取数据库。
MySQL 8添加了SET PERSIST命令,例如:
SET PERSIST max _ connections=500
MySQL会将此命令的配置保存到数据目录中的MySQL-auto . CNF文件,下次启动时会读取此文件,并用其中的配置覆盖默认配置文件。
4.UTF-8 编码
从MySQL 8开始,数据库默认编码会改为utf8mb4,包含所有表情字符。多年来,我们在使用MySQL时必须小心编写代码,以免忘记更改默认的拉丁文,导致代码混乱。从现在开始不用担心了。
5.通用表表达式(Common Table Expressions)
复杂查询使用嵌入式表,例如:
选择t1。*,t2。*出发地
(从表1中选择第1列)t1,
(从表2中选择第2列)T2;有了CTE,我们可以这样写:
随着
t1 AS(从表1中选择第1列),
t2 AS(从表2中选择第2列)
选择t1。*,t2。*
FROM t1,T2;这样看起来层次和区域更分明了,知道改哪个部分就更清楚了。
这个特性在许多报表场景中非常有用,也是MySQL优化的一个非常重要的特性
1.235窗口功能(窗口功能)
MySQL最受欢迎的特性之一就是缺少rank()函数。当需要在查询中进行排序时,必须手工编写@ variable。但是从8.0开始,MySQL增加了一个新概念,叫做窗口函数,可以用来实现几种新的查询方法。
Window函数有点像SUM()和COUNT()这样的聚合函数,但是它没有将多行查询结果合并到一行中,而是将结果放回多行中。也就是说,窗口函数不需要GROUP BY。
假设我们有一个“类号”表:
如果要将班级规模从小到大排序,可以使用如下窗口功能:
说明:这里创建了一个名为w的窗口,它指定对stu_count字段进行排序,然后在select子句中对w执行rank()方法,并将结果作为rank字段输出。
这个功能也是Oracle11g的一个新功能,在优化也扮演着重要的作用