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

6次阅读
没有评论

共计 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.7 MySQL 8.0
查询性能 较低 显著提升,支持窗口函数和并行查询
JSON 支持 基础支持 增强支持,支持 JSON 表函数
窗口函数 不支持 支持
CTE 不支持 支持
角色管理 不支持 支持
默认身份验证插件 mysql_native_password caching_sha2_password
原子 DDL 不支持 支持
自增列持久化 不支持 支持
数据字典 文件存储 InnoDB 表存储
默认字符集 utf8 utf8mb4

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

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