MySQL 5.x和8.0区别

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 性能:8.0的速度要比5.7快2倍,8.0在以下方面带来了更好的性能:读/写负载、IO密集型工作负载、高竞争("hot spot"热点竞争问题)工作负载。

1、性能:8.0的速度要比5.7快2倍,8.0在以下方面带来了更好的性能:读/写负载、IO密集型工作负载、高竞争("hot spot"热点竞争问题)工作负载。

2、NoSQL:5.7 版本开始提供NoSQL存储功能,目前在8.0版本中这部分功能得到更大的改进。该项功能删除取消了对独立的NoSQL文档数据库的需求,而MySQL文档存储也为schema-less模式的JSON文档提供了多文档事务支持和完整的ACID合规性。

3、窗口函数(Windos Functions):从8.0开始,新增了一个叫窗口函数的概念,它可以用来实现若干新的查询方式。窗口函数与SUM()、COUNT()这种集合函数类似,但它不会将多行查询结果合并为一行,而是将结果放回多行当中。即窗口函数不需要GROUP BY。

4、隐藏索引:在8.0版本中,索引可以被“隐藏”和“显示”。当对索引进行隐藏时,他不会被查询优化器所使用,我们可以使用这个特性用户性能调试,例如:我们先隐藏一个索引,然后观察其对数据库的影响。如果数据库性能有所下降,说明这个索引是有用的,然后将其“恢复显示”即可,如果数据库性能看不出变化,说明这个索引是多余的,可以考虑删掉。

5、取消查询缓存:8.0出于性能和可维护性方面的考虑取消了查询缓存,通过使用索引,更好的查询计划优化,以及缓存结果集而不是整个查询。这些方法更有效地提高了查询性能,同时避免了查询缓存可能引入的问题。

6、select for update支持no wait:如果另一个事务已经锁定了一些行,当前事务将等待直到那些锁被释放。加上NOWAIT关键字后,如果尝试锁定的行已经被其他事务锁定,数据库将立即抛出一个错误,而不是等待。

7、降序索引:8.0为索引提供按照降序方式进行排序的支持,在这种索引中的值也会按降序的方式尽心排序。

8、通用表达式(Common Table Expressions CTE):在复杂的查询中使用嵌入式表时,使用CTE使得查询语句更清晰。

9、UTF编码:8.0开始,使用utf8mb4作为MySQL的默认字符集。

10、JSON:8.0大幅改进了对JSON的支持,添加了其基于路径查询参数从JSON字段中抽取数据的JSON_EXTRACT()函数,以及用于数据分别组合到JSON数据和对象中的JSON_ARRAYAGG()和JSON_OBJECTAGG()聚合函数。

11、可靠性:InnoDB现在支持表DDL的原子性,也就是InnoDB表上的DDL也可以实现事务完整性,要么失败回滚,要么成功提交,不至于出现DDL时部分成功的问题,此外还支持crash-safe特性,元数据存储在单个事务数据字典中。

12、高可用性(High Availability):InnoDB集群为您的数据库提供集成的原生HA解决方案。

13、安全性:对OpenSSL的改进、新的默认身份验证、SQL角色、密码强度、授权。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
关系型数据库 MySQL 分布式数据库
Hbase与MySQL对比,区别是什么?
Hbase与MySQL对比,区别是什么?
93 2
|
2天前
|
关系型数据库 MySQL 数据库
MySQL:union all与union区别详解
MySQL:union all与union区别详解
|
26天前
|
关系型数据库 MySQL 数据库
【MySQL】MySQL数据库的delete from table和truncate table之间的区别
【MySQL】MySQL数据库的delete from table和truncate table之间的区别
222 1
|
29天前
|
SQL 关系型数据库 MySQL
蓝易云 - Mysql join加多条件与where的区别
总的来说,JOIN和WHERE都是SQL查询的重要部分,但它们用于处理不同的问题:JOIN用于连接表,而WHERE用于过滤结果。
12 2
|
17天前
|
关系型数据库 MySQL 数据库
DELETE、TRUNCATE 和 DROP 在MySQL中的区别及使用示例
DELETE、TRUNCATE 和 DROP 在MySQL中的区别及使用示例
27 0
|
1月前
|
SQL 关系型数据库 MySQL
MySQL中的where和having的区别
MySQL中的where和having的区别
27 2
|
1月前
|
存储 SQL 关系型数据库
MySQL中的当前读和快照读及其区别
MySQL中的当前读和快照读及其区别
47 0
|
2月前
|
关系型数据库 MySQL 数据库
mysql 设置环境变量与未设置环境变量连接数据库的区别
设置与未设置MySQL环境变量在连接数据库时主要区别在于命令输入方式和系统便捷性。设置环境变量后,可直接使用`mysql -u 用户名 -p`命令连接,而无需指定完整路径,提升便利性和灵活性。未设置时,需输入完整路径如`C:\Program Files\MySQL\...`,操作繁琐且易错。为提高效率和减少错误,推荐安装后设置环境变量。[查看视频讲解](https://www.bilibili.com/video/BV1vH4y137HC/)。
125 3
mysql 设置环境变量与未设置环境变量连接数据库的区别
|
2月前
|
SQL 关系型数据库 MySQL
【MySQL】DQL-分组查询-语法&where与having的区别&注意事项&可cv例题语句
【MySQL】DQL-分组查询-语法&where与having的区别&注意事项&可cv例题语句
【MySQL】DQL-分组查询-语法&where与having的区别&注意事项&可cv例题语句
|
2月前
|
存储 关系型数据库 MySQL
【MySQL】存储引擎简介、存储引擎特点、存储引擎区别
【MySQL】存储引擎简介、存储引擎特点、存储引擎区别
44 2