ITPub博客

首页 > 数据库 > MySQL > MySQL 5.7 与 MySQL 8.0 区别(特性)

MySQL 5.7 与 MySQL 8.0 区别(特性)

原创 MySQL 作者:pingdanorcale 时间:2026-05-24 08:27:36 0 删除 编辑

一、版本概述

版本 发布时间 生命周期
MySQL 5.7 2015年 已进入EOL阶段
MySQL 8.0 2018年 当前主流长期版本

MySQL 8.0 是 MySQL 5.7 的重大升级版本,在:

  • 性能
  • 安全性
  • SQL能力
  • 运维能力
  • JSON支持
  • 高可用
  • 数据字典

等方面都有大量增强。


二、核心区别总览

对比项 MySQL 5.7 MySQL 8.0
数据字典 基于文件 统一数据字典
默认字符集 latin1 utf8mb4
密码加密 mysql_native_password caching_sha2_password
JSON支持 基础 增强
窗口函数 不支持 支持
CTE 不支持 支持
降序索引 不支持 支持
隐藏索引 不支持 支持
原子DDL 不支持 支持
资源管理 无 支持
性能 一般 更优
安全性 一般 更高
运维能力 一般 更强

三、架构层面区别

1、数据字典(Data Dictionary)

MySQL 5.7

MySQL 5.7 元数据保存在:

  • .frm
  • .trn
  • .par
  • .opt

等文件中。

问题:

  • 容易损坏
  • 管理复杂
  • 元数据不一致

MySQL 8.0

8.0 引入:

  • 事务型数据字典

元数据统一保存在 InnoDB 表中。

优势:

  • 崩溃恢复更好
  • 元数据一致性更强
  • 不再依赖 frm 文件

四、字符集变化

MySQL 5.7 默认:

latin1

很多中文环境需要手工改:

character_set_server=utf8mb4

MySQL 8.0 默认:

utf8mb4

优势:

  • 完整支持 Unicode
  • 支持 Emoji
  • 国际化更好

五、认证与安全区别

1、默认认证插件

MySQL 5.7

mysql_native_password

MySQL 8.0

caching_sha2_password

特点:

  • 更安全
  • 密码加密更强

但:

  • 老驱动可能不兼容

例如:

  • 老 JDBC
  • Navicat 老版本

会出现:

Authentication plugin 'caching_sha2_password' cannot be loaded

解决:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

2、密码策略增强

MySQL 8.0:

  • 默认开启密码复杂度校验
  • 密码过期机制增强
  • SSL/TLS增强

六、SQL能力增强(重点)

这是 MySQL 8.0 最大提升之一。


1、窗口函数(Window Function)

MySQL 5.7

不支持。

需要:

  • 子查询
  • 变量
  • 临时表

实现复杂统计。


MySQL 8.0

支持:

ROW_NUMBER()

RANK()
DENSE_RANK()
LAG()
LEAD()

示例:


SELECT

   empno,
   sal,
   ROW_NUMBER() OVER(PARTITION BY deptno ORDER BY sal DESC)
FROM emp;

2、CTE(公共表达式)

5.7

不支持:

WITH

8.0

支持:

WITH RECURSIVE

示例:


WITH cte 
AS (

    SELECT 1 AS n
    UNION ALL
    SELECT n + 1 FROM cte WHERE n < 10
)
SELECT * FROM cte;

3、递归查询

8.0 支持递归SQL。

5.7 不支持。


4、JSON增强

MySQL 5.7

仅基础 JSON。


MySQL 8.0

新增:

JSON_TABLE()

JSON_ARRAYAGG()
JSON_OBJECTAGG()

并支持:

  • JSON索引优化
  • 更快解析
  • 文档数据库能力增强

七、索引能力增强

1、降序索引

5.7

不支持真正降序。

ORDER BY create_time DESC

无法有效使用索引。


8.0

支持:

CREATE INDEX idx_time ON t(create_time DESC);

2、隐藏索引(Invisible Index)

8.0 支持:

ALTER TABLE t ALTER INDEX idx_name INVISIBLE;

作用:

  • 测试删除索引风险
  • SQL优化验证

非常适合生产环境。


八、DDL能力增强

1、原子DDL

5.7

DDL失败:

可能残留中间状态。


8.0

支持:

  • Atomic DDL

特点:

  • 成功即提交
  • 失败自动回滚

更安全。


2、在线DDL增强

8.0:

  • 更多DDL支持 INPLACE
  • 锁表时间更短

适合大表运维。


九、性能提升

MySQL 8.0 优势

1、优化器增强

包括:

  • 更智能执行计划
  • hash join
  • 更优索引选择

2、并发性能提升

改进:

  • redo log
  • undo
  • buffer pool

高并发更稳定。


3、性能_schema增强

监控更细粒度。

适合:

  • SQL治理
  • 自动化运维
  • 性能分析平台

十、运维能力增强

1、资源组(Resource Group)

8.0 支持:

CREATE RESOURCE GROUP

可限制:

  • CPU
  • 线程

2、角色管理(Role)

5.7

权限需要逐个用户授权。


8.0

支持:

CREATE ROLE

示例:


CREATE 
ROLE dba_role;


GRANT SELECT, INSERT ON test. * TO dba_role;

GRANT dba_role TO 'user1'@ '%';

优势:

  • 权限管理更规范

十一、复制与高可用增强

MySQL 8.0 增强

包括:

  • 并行复制增强
  • GTID增强
  • Group Replication优化
  • Clone Plugin

Clone Plugin(重点)

8.0 支持:

CLONE INSTANCE

作用:

  • 快速搭建从库
  • 替代传统物理备份恢复

非常适合:

  • 自动化部署
  • 云环境

十二、兼容性问题(升级重点)

从 5.7 升级 8.0 常见问题


1、认证插件不兼容

老客户端无法连接。


2、关键字变化

8.0 新增保留字:

例如:

RANK

SYSTEM
WINDOW

可能导致旧SQL报错。


3、字符集变化

utf8mb4 索引长度变化。

可能出现:

Specified key was too long

4、排序规则变化

8.0 默认:

utf8mb4_0900_ai_ci

排序结果可能变化。


十三、升级建议

建议升级到 MySQL 8.0 的场景

适合:

  • 新项目
  • 云平台
  • 自动化运维
  • 大数据量
  • 高并发
  • JSON应用
  • 国产化替代配套

暂不建议立即升级场景

如果存在:

  • 老系统
  • 老驱动
  • 大量历史SQL
  • 第三方软件依赖5.7

建议先做兼容性测试。


十四、升级流程建议

推荐流程

测试环境验证

   ↓
SQL兼容检查
   ↓
驱动兼容检查
   ↓
备份
   ↓
灰度升级
   ↓
正式切换

十五、总结

MySQL 5.7 特点

优点:

  • 稳定
  • 生态成熟

缺点:

  • 功能较旧
  • 已逐步淘汰

MySQL 8.0 特点

优点:

  • 功能强
  • 性能高
  • 安全性强
  • 运维友好

缺点:

  • 兼容性要求更高
  • 升级需评估

十六、最终建议

场景 建议
新项目 直接 MySQL 8.0
老系统稳定运行 可暂保留5.7
云化平台 推荐8.0
自动化运维平台 推荐8.0
国产数据库迁移前置 推荐8.0
高并发系统 推荐8.0

十七、附录:版本查看命令

SELECT VERSION();

查看字符集:

SHOW VARIABLES LIKE 'character_set%';

查看认证插件:

SELECT user,host,plugin FROM mysql.user;


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10201716/viewspace-3171994/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-01-02

  • 博文量
    158
  • 访问量
    221191