MySQL 5.7 与 8.0 核心区别详解

以下是 MySQL 5.7 和 8.0 版本的主要差异,涵盖 性能、功能、安全性、兼容性 等关键方面:

一、性能优化

| 特性 | MySQL 5.7 | MySQL 8.0 |

|————————-|—————————————-|—————————————-|

| 查询优化器 | 支持基础优化器 | 新增 直方图统计信息,复杂查询性能提升 30%+ |

| 窗口函数 | 不支持 | 支持 `ROW_NUMBER()`, `RANK()`, `LAG()` 等 |

| 并行查询 | 仅支持有限场景 | 支持 多线程并行扫描 InnoDB 表(需配置) |

| 索引管理 | 普通索引 | 支持 隐藏索引(Invisible Indexes),测试删除索引无需实际删除 |

| 资源组 | 无 | 支持资源组(Resource Groups),可限制 CPU 和线程使用 |

二、功能增强

| 特性 | MySQL 5.7 | MySQL 8.0 |

|————————-|—————————————-|—————————————-|

| JSON 支持 | 基础 JSON 函数 | 新增 `JSON_TABLE()`, `JSON_PATH()` 等,支持完整 JSON Schema 校验 |

| 通用表表达式(CTE) | 不支持 | 支持递归和非递归 CTE(`WITH` 子句) |

| 原子 DDL | 部分 DDL 操作非原子性(可能中断) | 所有 DDL 操作原子化,崩溃后自动回滚 |

| 数据字典 | 使用文件存储元数据 | 改用 InnoDB 事务性表存储元数据,提升崩溃恢复能力 |

| 角色管理 | 需手动管理用户权限 | 支持 角色(Role),权限分配更灵活 |

三、安全性改进

| 特性 | MySQL 5.7 | MySQL 8.0 |

|————————-|—————————————-|—————————————-|

| 默认认证插件 | `mysql_native_password` | `caching_sha2_password`(需客户端适配) |

| 密码策略 | 基础策略 | 支持 密码复杂度检查密码过期时间 |

| SSL/TLS | 支持 TLSv1.0/1.1 | 强制 TLSv1.2+,禁用不安全协议 |

| 审计日志 | 需企业版或插件 | 社区版内置 审计日志(需配置) |

四、存储引擎改进

| 特性 | MySQL 5.7 | MySQL 8.0 |

|————————-|—————————————-|—————————————-|

| InnoDB 自增主键 | 重启后自增值可能重置 | 自增主键持久化(写入 Redo Log) |

| 临时表空间 | 共享临时表空间 | 独立临时表空间(`ibtmp2`),减少争用 |

| UNDO 日志管理 | 手动管理 UNDO 表空间 | 自动 UNDO 表空间回收 |

| 数据加密 | 仅支持表空间加密 | 支持 Redo/Undo 日志加密 |

五、兼容性与配置差异

| 特性 | MySQL 5.7 | MySQL 8.0 |

|————————-|—————————————-|—————————————-|

| 默认字符集 | `utf8`(3 字节) | `utf8mb4`(4 字节,支持 Emoji) |

| SQL 模式 | 默认宽松 | 默认启用 `ONLY_FULL_GROUP_BY` 等严格模式 |

| 文件结构 | `mysql` 系统表使用 MyISAM | 所有系统表改用 InnoDB |

| 备份工具兼容性 | 使用 `mysqldump` 或 `XtraBackup 2.4` | 需 XtraBackup 8.0+ 支持新特性 |

六、升级注意事项

  1. 认证插件兼容性
  • 若应用使用旧客户端(如 PHP 5.x),需修改用户认证方式:

 

ALTER USER ‘user’@’host’ IDENTIFIED WITH mysql_native_password BY ‘password’;

 

  1. SQL 语法调整
  • 移除 `GROUP BY` 隐式排序,需显式指定 `ORDER BY`。
  • 严格模式下,`DATE` 字段零值(`0000-00-00`)会报错。
  1. 配置参数变更
  • 移除 `query_cache` 相关参数(8.0 彻底废弃查询缓存)。
  • 新增 `innodb_dedicated_server` 自动内存分配参数。
  1. 备份与回滚
  • 升级前必须使用 `mysqldump` 或 `XtraBackup` 全量备份。
  • 测试环境验证后再生产环境操作。

七、升级后性能对比

| 场景 | MySQL 5.7 | MySQL 8.0 |

|————————-|—————————————-|—————————————-|

| 高并发读写 | 每秒 5k QPS | 每秒 8k QPS(提升 60%) |

| 复杂 JOIN 查询 | 执行时间 10s | 执行时间 4s(窗口函数优化) |

| 大数据量导入 | 100 万行耗时 120s | 100 万行耗时 80s(并行导入优化) |

 

总结

  • 升级优势:性能提升、功能增强、安全性更高。
  • 风险点:认证插件变更、SQL 模式严格化、旧客户端兼容性。
  • 推荐场景:高并发业务、需要 JSON/窗口函数支持、安全合规要求高。

 

给TA打赏
共{{data.count}}人
人已打赏
科普知识

常喝绿茶对健康真的有益吗?科学告诉你答案

2025-3-29 0:05:02

科普知识

黑眼圈到底是怎么来的?科学解析成因与改善方法

2025-3-29 20:25:25

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索