以下是 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+ 支持新特性 |
六、升级注意事项
- 认证插件兼容性
- 若应用使用旧客户端(如 PHP 5.x),需修改用户认证方式:
ALTER USER ‘user’@’host’ IDENTIFIED WITH mysql_native_password BY ‘password’;
- SQL 语法调整
- 移除 `GROUP BY` 隐式排序,需显式指定 `ORDER BY`。
- 严格模式下,`DATE` 字段零值(`0000-00-00`)会报错。
- 配置参数变更
- 移除 `query_cache` 相关参数(8.0 彻底废弃查询缓存)。
- 新增 `innodb_dedicated_server` 自动内存分配参数。
- 备份与回滚
- 升级前必须使用 `mysqldump` 或 `XtraBackup` 全量备份。
- 测试环境验证后再生产环境操作。
七、升级后性能对比
| 场景 | MySQL 5.7 | MySQL 8.0 |
|————————-|—————————————-|—————————————-|
| 高并发读写 | 每秒 5k QPS | 每秒 8k QPS(提升 60%) |
| 复杂 JOIN 查询 | 执行时间 10s | 执行时间 4s(窗口函数优化) |
| 大数据量导入 | 100 万行耗时 120s | 100 万行耗时 80s(并行导入优化) |
总结
- 升级优势:性能提升、功能增强、安全性更高。
- 风险点:认证插件变更、SQL 模式严格化、旧客户端兼容性。
- 推荐场景:高并发业务、需要 JSON/窗口函数支持、安全合规要求高。