当前位置: 首页 > news >正文

MySQL8.x新特性:与mysql5.x的版本区别

MySQL8.x新特性

1.与mysql5.x的区别:MySQL8.x新特性:与mysql5.x的版本区别-CSDN博客

2.窗口函数(Window Functions):MySQL8.x新特性:窗口函数(Window Functions)-CSDN博客

引言

MySQL是开源关系型数据库的代表,广泛应用于不同规模的Web和企业应用中。从MySQL5.x到MySQL8.x的升级带来了大量功能的改进和性能提升。

1.性能改进

1.1窗口函数(Window Functions)

MySQL8.x

支持窗口函数,窗口函数可以简化复杂查询,避免多层嵌套子查询,语法:

SELECT WINDOW_FUNCTION() OVER([PARTITION BY `字段1`, `字段2`, ...][ORDER BY `字段3`, `字段4`][FRAME_CLAUSE]) [AS `别名`]
FROM `表名` ;

MySQL5.x

不支持窗口函数,需通过子查询或复杂JOIN实现类似功能。

1.2公共表表达式(Common Table Expressions CTE)

MySQL8.x

支持递归和非递归的公共表表达式(CTE)。CTE提高复杂查询的可读性和维护性。语法:

WITH RECURSIVE cte_name AS
(SELECT ...      <-- specifies initial setUNION ALLSELECT ...      <-- specifies how to derive new rows
)

MySQL5.x

不支持CTE。

1.3索引优化

MySQL8.x

支持隐藏索引(Invisible Indexes),可以临时禁用索引而不删除。

ALTER TABLE my_table ALTER INDEX idx_name INVISIBLE;

支持降序索引(Descending Indexes),优化ORDER BY column DESC查询。

CREATE INDEX idx_name ON my_table (column DESC);

MySQL5.x

不支持隐藏锁芯和降序索引。

2.JSON功能增强

MySQL8.x

新增JSON操作符->>,替代JSON_UNQUOTE(JSON_EXTRACT())

SELECT json_column->>'$.key' FROM my_table;

支持JSON路径表达式(JSON_PATH),增强JSON的数据查询能力

新增函数:

JSON_TABLE():将JSON数据转换为表格形式。

JSON_MERGE_PATCH():合并JSON文档。

JSON_STORAGE_SIZE:返回JSON数据的存储大小。

MySQL5.x

JSON功能较为基础,仅支持JSON_EXTRACT()JSON_ARRAY()JSON_OBJECT()等。

3.安全性改进

3.1默认身份验证插件

MySQL8.x

默认使用caching_sha2_password插件,提供更强的密码加密。

注意:旧客户端可能不兼容,需升级或显式修改插件:

ALTER USER 'user'@'host' IDENTIFIED WITH mysql_native_password BY 'password';

MySQL5.x

默认使用mysql_native_password插件。

3.2角色管理

MySQL8.x

支持角色(Roles),简化权限管理。

CREATE ROLE 'read_only';
GRANT SELECT ON db.* TO 'read_only';
GRANT 'read_only' TO 'user'@'host';

MySQL5.x

需手动分配权限,无角色支持。

3.3密码策略

MySQL8.x

支持密码过期策略、密码复用限制、密码强度检查等。

SET GLOBAL validate_password.policy = STRONG;

MySQL5.x

需通过插件实现部分功能。

4.数据字典

MySQL8.x

重构数据字典,将系统表(如information_schema)存储在 InnoDB 引擎中。

支持原子 DDL 操作(Atomic DDL),DDL 操作要么完全成功,要么回滚。

MySQL5.x

数据字典存储在 MyISAM 表中,不支持原子 DDL。

5.字符集与编码

MySQL8.x

默认字符集从latin1改为utf8mb4,全面支持 Unicode(包括表情符号)。

支持utf8mb4_0900_ai_ci校对规则,提供更准确的排序和比较。

MySQL5.x

默认字符集为latin1,需手动修改为utf8mb4

6.资源管理

MySQL8.x

支持资源组(Resource Groups),可限制 CPU 和线程优先级。

CREATE RESOURCE GROUP my_group TYPE = USER VCPU = 0-1 THREAD_PRIORITY = 5;
SET RESOURCE GROUP my_group FOR thread_id;

MySQL5.x

无此功能。

7.InnoDB 改进

MySQL8.x

支持原子DDL(Atomic DDL),DDL 操作要么完全成功,要么回滚。

自增列(AUTO_INCREMENT)持久化,重启后不会重置。

支持并行构建全文索引。

MySQL5.x

不支持原子 DDL 和自增列持久化。

8.配置参数变化

MySQL8.x

移除或弃用部分旧参数(如query_cache_typeinnodb_cache_typeinnodb_file_format)。

新增参数(如innodb_dedicated_server自动配置 InnoDB 内存)。

MySQL5.x

使用旧参数,需手动调优。

9.备份与恢复

MySQL8.x

支持备份锁(Backup Lock),允许在线备份期间执行 DML 操作(仅阻塞 DDL)。

LOCK INSTANCE FOR BACKUP;
UNLOCK INSTANCE;

MySQL5.x

无备份锁功能。

10.事务与隔离级别

MySQL8.x

默认事务隔离级别为REPEATABLE READ(与 5.7 一致)。

支持NOWAITSKIP LOCKED选项,优化锁竞争场景。

SELECT * FROM my_table FOR UPDATE NOWAIT;

MySQL5.x

不支持NOWAITSKIP LOCKED

11.复制与高可用

MySQL8.x

增强 Group Replication(组复制)的性能和稳定性。

支持并行复制(基于 WriteSet 的多线程复制)。

默认启用二进制日志的校验和(binlog_checksum=CRC32)。

MySQL5.x

并行复制功能较弱。

12.优化器改进

MySQL8.x

支持 直方图统计(Histogram Statistics),提升复杂查询的执行计划选择。

支持 跳过索引扫描(Skip Scan Index Access)。

MySQL5.x

不支持直方图和跳过索引扫描。

13.性能模式(Performance Schema

MySQL8.x

增强性能模式,支持更多监控指标(如事务、锁、内存使用等)。

MySQL5.x

性能模式功能较少。

14.移除的功能

MySQL8.x

移除Query Cache(查询缓存),因多核扩展性问题。

移除password()函数,改用 SHA2 加密

MySQL5.x

支持Query Cachepassword()函数。

15.总结

特性MySQL5.x

MySQL8.x

查询性能较低显著提升,支持窗口函数和并行查询
JSON 支持基础支持增强支持,支持 JSON 表函数
窗口函数不支持支持
CTE不支持支持
角色管理不支持支持
默认身份验证插件mysql_native_passwordcaching_sha2_password
原子 DDL不支持支持
自增列持久化不支持支持
数据字典文件存储InnoDB 表存储
默认字符集utf8utf8mb4

相关文章:

  • 数据库行业竞争加剧,MySQL 9.3.0 企业版开始支持个人下载
  • Hue面试内容整理-示例编码题
  • MODBUS RTU调试助手使用方法详解
  • 基于React的高德地图api教程006:两点之间距离测量
  • MySQL刷题 day04
  • Maven Deploy的依赖与引用方的依赖不同
  • Leaflet 自定义瓦片地图与 PHP 大图切图算法 解决大图没办法在浏览器显示的问题
  • k8s部署实战-springboot应用部署
  • Golang基于反射的ioctl实现
  • 浅谈“量子计算应用:从基础原理到行业破局”
  • 常见面试题
  • 预测模型开发与评估:基于机器学习的数据分析实践
  • DAY24元组和OS模块
  • 从小区到商场再到校园,AI智能分析网关V4高空抛物检测方案全场景护航
  • 微服务中服务降级和异常的区别
  • git克隆github项目到本地的三种方式
  • OAT 初始化时出错?问题可能出在 PAM 配置上|OceanBase 故障排查实践
  • HTTPS 加密原理
  • 第二十次博客打卡
  • 【日撸 Java 三百行】Day 18(循环队列)
  • 海外考古大家访谈|冈村秀典:礼制的形成与早期中国
  • 以军证实空袭也门多个港口
  • 刘国中将出席第78届世界卫生大会并顺访瑞士、访问白俄罗斯
  • 侵害孩子者,必严惩不贷!3名性侵害未成年人罪犯被执行死刑
  • 一周文化讲座|“我的生命不过是温柔的疯狂”
  • 人民日报民生观:转人工客服,怎么这么难?