MySQL 版本演进概览
MySQL 的主要版本发展可以概括为:5.1 -> 5.5 -> 5.6 -> 5.7 -> 8.0。
目前,MySQL 5.7 已于 2023年10月结束官方支持,MySQL 8.0 是绝对的主流和未来。新项目都应选择 8.0 或更高版本。
各主要版本核心区别与特性
下面我们按版本从新到旧进行梳理,重点对比 5.7 和 8.0 这两个最关键版本。
MySQL 8.0 (2018年发布,当前主流)
8.0 是一个里程碑式的大版本,引入了大量革命性的新特性。
类别 | 核心特性与改进 | 说明 |
---|---|---|
性能与存储 | 事务性数据字典 | 将系统表(如 user, db)从 MyISAM 引擎迁移到 InnoDB 引擎,并存储于数据字典表中,支持原子DDL,使元数据管理更安全、可靠。 |
直方图 | 为优化器提供表中数据分布的统计信息,帮助优化器在非索引字段上生成更优的执行计划。 | |
不可见索引 | 可以将索引设置为“不可见”,优化器会忽略它,用于测试删除某个索引是否会对性能产生负面影响,而无需真正删除。 | |
降序索引 | 支持按降序存储索引,对于 ORDER BY column DESC 的查询性能大幅提升。 | |
SQL功能 | 通用表表达式 | 支持 WITH 语句,可以创建命名的临时结果集,支持递归查询,处理树状或层次结构数据非常方便。 |
窗口函数 | 支持 ROW_NUMBER() , RANK() , LAG() 等强大的分析函数,无需分组即可对行数据进行复杂计算。 | |
资源组 | 可以将线程绑定到特定的CPU核心上,实现更精细化的资源管理。 | |
JSON增强 | 引入了 JSON_TABLE() , JSON_OBJECTAGG() , JSON_ARRAYAGG() 等更多JSON函数,功能更强大。 | |
安全与管理 | 角色 | 引入了数据库角色,可以批量管理用户权限,极大简化了权限管理。 |
默认字符集 | 默认字符集从 latin1 改为 utf8mb4 ,更好地支持全球化和emoji表情。 | |
默认认证插件 | 默认的身份认证插件改为 caching_sha2_password ,比之前的 mysql_native_password 更安全,但可能导致一些旧的客户端/驱动需要升级。 | |
持久化系统变量 | 使用 SET PERSIST 命令设置的变量在服务器重启后依然有效。 |
MySQL 5.7 (2015年发布,已停止支持)
5.7 是一个极其成功和稳定的版本,在其生命周期内是生产环境的绝对主力。
类别 | 核心特性与改进 | 说明 |
---|---|---|
性能与复制 | InnoDB 增强 | 在线缓冲池调整、在线修改 VARCHAR 长度、多线程页面清理等,提升了并发处理能力和在线操作能力。 |
组提交 | 实现了多线程组提交,极大改善了在高并发写场景下的性能。 | |
多源复制 | 一个从库可以同时从多个主库复制数据,用于数据汇总。 | |
增强的半同步复制 | 引入了无损复制,保证主从数据强一致性。 | |
SQL功能 | 原生JSON支持 | 引入了 JSON 数据类型,并提供 JSON_EXTRACT , JSON_OBJECT 等函数,但功能不如 8.0 强大。 |
生成列 | 可以创建由其他列计算得出的列,分为 VIRTUAL(不存储)和 STORED(存储)两种。 | |
Sys Schema | 引入了一个名为 sys 的系统库,提供了一系列视图、函数和存储过程,让性能诊断和问题排查变得非常简单。 | |
空间数据支持 | 增强了对 GIS 数据的支持。 | |
安全 | 密码验证策略 | 引入了密码过期策略和密码强度验证插件。 |
MySQL 5.6 (2013年发布,已停止支持)
5.6 版本是 InnoDB 引擎和优化器能力大幅提升的版本。
核心特性与改进 | 说明 |
---|---|
InnoDB 性能提升 | 成为绝对的默认存储引擎,提供了全文索引、独立的 undo tablespace。 |
优化器改进 | 引入了索引条件下推,可以在存储引擎层利用索引过滤数据,减少回表次数。 |
复制增强 | 支持基于库的并行复制,提升了从库的复制性能。支持 GTID,使主从切换和故障恢复更方便。 |
在线DDL | 支持了更多种类的在线 DDL 操作,减少了对业务的影响。 |
MySQL 5.5 (2010年发布,已停止支持)
核心特性与改进 | 说明 |
---|---|
InnoDB 成为默认引擎 | 取代 MyISAM,标志着 MySQL 向事务安全型数据库的彻底转变。 |
半同步复制 | 提供了比异步复制更强的数据一致性保证。 |
性能提升 | 引入了 InnoDB 的缓冲池预加载等特性。 |
总结与版本选择建议
版本 | 状态 | 建议 |
---|---|---|
MySQL 8.0 | 积极维护,长期支持 | 强烈推荐。所有新项目都应选择此版本。它提供了最好的性能、最丰富的功能和最新的安全更新。 |
MySQL 5.7 | 已停止官方支持 | 不推荐。仅适用于尚未完成升级的遗留系统,应尽快制定迁移计划至 8.0。 |
MySQL 5.6 及更早 | 已停止官方支持 | 绝对禁止。存在已知安全漏洞且无修复,必须立即升级。 |
升级路径
通常的升级路径是:5.5/5.6 -> 5.7 -> 8.0。从 5.7 升级到 8.0 前,务必仔细阅读官方文档,进行充分的兼容性测试,因为两者在默认配置(如认证插件、字符集)上有较大变化。
希望这份整理能帮助您清晰地了解 MySQL 的版本演进和区别!
评论 (0)