Mysql5.7到MySQL8.0的主要特性区别

142次阅读
没有评论

共计 2240 个字符,预计需要花费 6 分钟才能阅读完成。

MySQL 5.7 和 8.0 是两个重要的版本,MySQL 8.0 在性能、功能和安全方面进行了大量改进和优化。以下是 MySQL 5.7 和 8.0 的主要区别:

1. 性能改进

官方表示 MySQL 8.0 的速度要比 MySQL 5.7 快 2 倍。MySQL 8.0 在读 / 写工作负载、IO 密集型工作负载、以及高竞争工作负载时相比 MySQL5.7 有更好的性能。

Mysql5.7 到 MySQL8.0 的主要特性区别

1.1 查询性能

  • MySQL 8.0
    • 引入了 窗口函数(Window Functions),支持复杂的分析查询。
    • 改进了优化器的成本模型,查询性能显著提升。
    • 支持 隐藏索引(Invisible Indexes),可以临时禁用索引而不删除。
  • MySQL 5.7
    • 不支持窗口函数,复杂查询需要嵌套子查询或连接操作。

1.2 并发性能

  • MySQL 8.0
    • 改进了 InnoDB 的并发性能,支持更高的并发连接数。
    • 引入了 原子 DDL(Atomic DDL),确保 DDL 操作的原子性,减少锁冲突。
  • MySQL 5.7
    • 并发性能较低,DDL 操作可能导致较长时间的锁等待。

1.3 读写性能

  • MySQL 8.0
    • 支持 并行查询(Parallel Query Execution),加速复杂查询。
    • 改进了 缓冲池(Buffer Pool)的管理,减少 I/O 开销。
  • MySQL 5.7
    • 不支持并行查询,复杂查询性能较低。

2. 功能增强

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

Mysql5.7 到 MySQL8.0 的主要特性区别

2.1 JSON 支持

  • MySQL 8.0
    • 增强了 JSON 功能,支持更多的 JSON 函数和路径表达式。
    • 引入了JSON 表函数(JSON_TABLE),可以将 JSON 数据转换为关系表。
  • MySQL 5.7
    • 支持 JSON 数据类型和基本操作,但功能较为有限。

2.2 窗口函数

  • MySQL 8.0
    • 支持窗口函数(如 ROW_NUMBER()RANK()DENSE_RANK() 等),简化复杂查询。
  • MySQL 5.7
    • 不支持窗口函数。

2.3 CTE(公共表表达式)

  • MySQL 8.0
    • 支持 CTE(Common Table Expressions),提高复杂查询的可读性和可维护性。
  • MySQL 5.7
    • 不支持 CTE。

2.4 角色管理

  • MySQL 8.0
    • 引入了 角色管理 功能,可以更方便地管理用户权限。
  • MySQL 5.7
    • 不支持角色管理,权限管理较为繁琐。

3. 安全性增强

3.1 默认身份验证插件

  • MySQL 8.0
    • 默认使用 caching_sha2_password 插件,提供更强的密码安全性。
  • MySQL 5.7
    • 默认使用 mysql_native_password 插件,安全性较低。

3.2 密码管理

  • MySQL 8.0
    • 支持密码过期、密码历史记录和密码复杂度检查。
  • MySQL 5.7
    • 密码管理功能较弱。

3.3 数据加密

  • MySQL 8.0
    • 支持更多的加密功能,如 InnoDB 表空间加密
  • MySQL 5.7
    • 加密功能有限。

4. InnoDB 改进

4.1 原子 DDL

  • MySQL 8.0
    • 支持原子 DDL 操作,确保 DDL 语句的原子性。
  • MySQL 5.7
    • DDL 操作不是原子的,可能导致部分失败。

4.2 自增列持久化

  • MySQL 8.0
    • 自增列的值在服务器重启后不会重置,确保数据一致性。
  • MySQL 5.7
    • 自增列的值在服务器重启后可能重置(innodb_autoinc_lock_mode=2 时(对于 innodb 存储引擎))。

5. 其他改进

5.1 数据字典

  • MySQL 8.0
    • 引入了新的数据字典,元数据存储在 InnoDB 表中,提高了稳定性和性能。
  • MySQL 5.7
    • 使用文件存储元数据,性能较低。

5.2 GIS 功能

  • MySQL 8.0
    • 增强了 GIS(地理信息系统)功能,支持更多的空间数据类型和函数。
  • MySQL 5.7
    • GIS 功能较为基础。

5.3 备份锁

  • MySQL 8.0
    • 引入了备份锁(Backup Lock),减少备份期间的锁冲突。
  • MySQL 5.7
    • 备份期间锁冲突较多。

6. 兼容性变化

  • MySQL 8.0
    • 移除了一些过时的功能,如 old_passwords 插件。
    • 默认字符集改为 utf8mb4,支持更多的 Unicode 字符。
  • MySQL 5.7
    • 默认字符集为 utf8,不支持部分 Unicode 字符。

7. 总结

特性MySQL 5.7MySQL 8.0
查询性能较低显著提升,支持窗口函数和并行查询
JSON 支持基础支持增强支持,支持 JSON 表函数
窗口函数不支持支持
CTE不支持支持
角色管理不支持支持
默认身份验证插件mysql_native_passwordcaching_sha2_password
原子 DDL不支持支持
自增列持久化不支持支持
数据字典文件存储InnoDB 表存储
默认字符集utf8utf8mb4

MySQL 8.0 在性能、功能、安全性和可维护性方面都有显著提升,建议新项目直接使用 MySQL 8.0。对于现有系统,升级到 MySQL 8.0 需要充分测试,确保兼容性。

最后,附上 MySQL 8.0 参考手册 的链接地址:https://dev.mysql.com/doc/refman/8.0/en/

文章参考:

博客园 - 茄子_2008: https://www.cnblogs.com/xd502djj/p/18708939

博客园 - 鹅城小将: https://www.cnblogs.com/jlonghe/p/13439391.html

正文完
 66
wordme
版权声明:本站原创文章,由 wordme 于2025-05-20发表,共计2240字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中宝塔服务器面板,一键全能部署及管理
评论(没有评论)
验证码
最新评论
1 1 飒飒飒飒

MyWeb-我的小站

文章搜索
每日一言
-「
热门文章
Cursor + Figma MCP 完全配置与使用指南:实现设计到代码的智能转换

Cursor + Figma MCP 完全配置与使用指南:实现设计到代码的智能转换

通过 Model Context Protocol 打通设计与开发工作流,提升 10 倍效率 在现代设计开发流...
最新评论
1 1 飒飒飒飒
随机文章
Cursor + Figma MCP 完全配置与使用指南:实现设计到代码的智能转换

Cursor + Figma MCP 完全配置与使用指南:实现设计到代码的智能转换

通过 Model Context Protocol 打通设计与开发工作流,提升 10 倍效率 在现代设计开发流...
免费白嫖16G+2vCPU的服务器!超简单教程,有手就会

免费白嫖16G+2vCPU的服务器!超简单教程,有手就会

别看到免费服务器就想到什么科学 / 魔法的👨🏾 这不对👨🏾 这是一个正经的服务器👨🏾 玩大模型的一定不会陌生 ...
0元部署私有n8n,免费的2vCPU+16G服务器,解锁无限制的工作流体验

0元部署私有n8n,免费的2vCPU+16G服务器,解锁无限制的工作流体验

上次白嫖了  Hugging Face  的  2 核 16g 服务器 ,只跑了...
0元部署私有Uptime Kuma,免费的2vCPU+16G服务器,解锁易于使用的自托管监控工具

0元部署私有Uptime Kuma,免费的2vCPU+16G服务器,解锁易于使用的自托管监控工具

之前白嫖了  Hugging Face  的 2 核 16g 服务器 ,已经 部署了 n8...