| 分类 | MySQL 5.7 特性 | MySQL 8.0 改进 / 变化 | 升级注意事项 |
|---|---|---|---|
| 字符集 | 默认 latin1 | 默认改为 utf8mb4 | 若旧库为 utf8,需确认字符集兼容,避免乱码 |
| 系统表结构 | 元数据存储在 .frm 文件 | 引入统一 数据字典 (Data Dictionary) | 无法回退至 5.7;升级后 .frm 不再使用 |
| InnoDB | 较旧锁机制与日志系统 | Redo/Undo 重构、Atomic DDL、性能大幅提升 | 首次启动需时间转换旧表格式 |
| DDL 操作 | 非原子,失败可能破坏表结构 | 支持 原子DDL(失败可自动回滚) | 安全性提升,无需额外操作 |
| JSON | 支持 JSON 字段,但函数有限 | 新增 JSON_TABLE、聚合函数、索引支持 | JSON 查询性能更强,可替代 MongoDB 轻度场景 |
| 索引功能 | 不支持函数索引 / 隐藏索引 | 支持 函数索引、隐藏索引 | 可用于平滑索引优化测试 |
| 窗口函数 | ❌ 不支持 | ✅ 新增 ROW_NUMBER()、RANK() 等 | SQL 查询能力大幅增强 |
| CTE 公用表表达式 | ❌ 不支持 | ✅ 支持 WITH 和递归查询 | 报表、树形结构更简洁 |
| 角色管理 | 需手动分配权限 | ✅ 新增 Role 管理 (CREATE ROLE) | 管理员权限体系更清晰 |
| 认证插件 | 默认 mysql_native_password | 默认改为 caching_sha2_password | 若应用驱动不支持,需手动改回旧方式 |
| 密码安全 | 简单策略 | 支持密码过期、复杂度策略 | 提升安全性,初次升级需重新设策略 |
| 加密功能 | 仅部分加密 | ✅ 支持 表空间加密 (TDE) | 可选启用,无需修改应用 |
| 权限系统 | 无法动态修改权限 | ✅ 支持运行时动态调整权限 | 更方便临时授权与回收 |
| 系统变量 | SET GLOBAL 临时修改 | ✅ 支持 SET PERSIST 持久化修改 | 配置变更更持久化,减少改配置文件操作 |
| 性能 Schema | 数据维度较少 | 新增锁、事务、I/O 细粒度性能视图 | 可用于性能诊断与监控 |
| Group Replication | 需插件配置复杂 | 集成更完善,支持 InnoDB Cluster | 推荐使用 MySQL Shell 管理 |
| GIS 功能 | 不完全兼容 OGC | 完全符合 OGC 标准,支持更多空间函数 | 地理数据更易迁移与可视化 |
| 排序规则 | 旧版本 collation | 新 collation (utf8mb4_0900_ai_ci) 更精准 | 升级后排序结果可能不同(如大小写、重音) |
| 日志系统 | 较旧 redo/undo 格式 | 新 redo log & undo tablespace 管理 | 启动会自动升级格式 |
| 默认表引擎 | InnoDB | InnoDB(优化版) | 无需调整 |
| 配置文件参数 | 一些参数弃用 | 例如 query_cache_* 全部移除 | 若仍配置,将导致启动错误 |
| 查询缓存 (Query Cache) | 默认启用 | 完全移除 | 必须从配置文件中删除相关项 |
| 时间类型默认行为 | 严格模式差异 | 时区与零日期检查更严格 | 升级前检查不合法时间值 |
| 复制架构 | 主从异步 | 支持多线程复制、GTID 强化 | 建议启用 GTID 模式提升一致性 |
| 日志格式 | 支持 STATEMENT | 推荐使用 ROW 或 MIXED | 兼容性更高,减少丢失风险 |
| 工具与Shell | 传统 mysql 客户端 | 新增 MySQL Shell (mysqlsh) | 支持 JSON 模式与 InnoDB Cluster 管理 |
| 性能表现 | 高并发下瓶颈明显 | 改进锁调度、并行提交,性能提升 20-40% | 尤其 OLTP 场景提升显著 |
| 云原生支持 | 无官方容器镜像 | 官方维护 Docker/K8s Operator | 可直接部署在容器环境 |
打赏
已打赏¥{{reward_price}}
