| 版本 | 发布时间 | 生命周期 |
|---|---|---|
| MySQL 5.7 | 2015年 | 已进入EOL阶段 |
| MySQL 8.0 | 2018年 | 当前主流长期版本 |
MySQL 8.0 是 MySQL 5.7 的重大升级版本,在:
等方面都有大量增强。
| 对比项 | MySQL 5.7 | MySQL 8.0 |
|---|---|---|
| 数据字典 | 基于文件 | 统一数据字典 |
| 默认字符集 | latin1 | utf8mb4 |
| 密码加密 | mysql_native_password | caching_sha2_password |
| JSON支持 | 基础 | 增强 |
| 窗口函数 | 不支持 | 支持 |
| CTE | 不支持 | 支持 |
| 降序索引 | 不支持 | 支持 |
| 隐藏索引 | 不支持 | 支持 |
| 原子DDL | 不支持 | 支持 |
| 资源管理 | 无 | 支持 |
| 性能 | 一般 | 更优 |
| 安全性 | 一般 | 更高 |
| 运维能力 | 一般 | 更强 |
MySQL 5.7 元数据保存在:
.frm.trn.par.opt等文件中。
问题:
8.0 引入:
元数据统一保存在 InnoDB 表中。
优势:
latin1
很多中文环境需要手工改:
character_set_server=utf8mb4
utf8mb4
优势:
mysql_native_password
caching_sha2_password
特点:
但:
例如:
会出现:
Authentication plugin 'caching_sha2_password' cannot be loaded
解决:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
MySQL 8.0:
这是 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;
不支持:
WITH
支持:
WITH RECURSIVE
示例:
WITH cte AS (
SELECT 1 AS n
UNION ALL
SELECT n + 1 FROM cte WHERE n < 10
)
SELECT * FROM cte;
8.0 支持递归SQL。
5.7 不支持。
仅基础 JSON。
新增:
JSON_TABLE()
JSON_ARRAYAGG()
JSON_OBJECTAGG()
并支持:
不支持真正降序。
ORDER BY create_time DESC
无法有效使用索引。
支持:
CREATE INDEX idx_time ON t(create_time DESC);
8.0 支持:
ALTER TABLE t ALTER INDEX idx_name INVISIBLE;
作用:
非常适合生产环境。
DDL失败:
可能残留中间状态。
支持:
特点:
更安全。
8.0:
适合大表运维。
包括:
改进:
高并发更稳定。
监控更细粒度。
适合:
8.0 支持:
CREATE RESOURCE GROUP
可限制:
权限需要逐个用户授权。
支持:
CREATE ROLE
示例:
CREATE ROLE dba_role;
GRANT SELECT, INSERT ON test. * TO dba_role;
GRANT dba_role TO 'user1'@ '%';
优势:
包括:
8.0 支持:
CLONE INSTANCE
作用:
非常适合:
老客户端无法连接。
8.0 新增保留字:
例如:
RANK
SYSTEM
WINDOW
可能导致旧SQL报错。
utf8mb4 索引长度变化。
可能出现:
Specified key was too long
8.0 默认:
utf8mb4_0900_ai_ci
排序结果可能变化。
适合:
如果存在:
建议先做兼容性测试。
测试环境验证
↓
SQL兼容检查
↓
驱动兼容检查
↓
备份
↓
灰度升级
↓
正式切换
优点:
缺点:
优点:
缺点:
| 场景 | 建议 |
|---|---|
| 新项目 | 直接 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/ ,如需转载,请注明出处,否则将追究法律责任。