当前位置: 首页 > 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
http://www.xdnf.cn/news/481645.html

相关文章:

  • SpringBoot--Bean管理详解
  • 3D生成新突破:阶跃星辰Step1X-3D开源,可控性大幅提升
  • python + flask 做一个图床
  • ThinkPad X250电池换电池芯(理论技术储备)
  • windows系统中下载好node无法使用npm
  • STM32控制电机
  • duxapp 2025-03-29 更新 编译结束的复制逻辑等
  • MySQL的触发器
  • ubuntu 20.04 更改国内镜像源-阿里源 确保可用
  • 适合学校使用的桌面信息看板,具有倒计时、桌面时钟、课程表、天气预报、自动新闻联播、定时关机、消息通知栏、随机点名等功能。
  • CMU-15445(4)——PROJECT#1-BufferPoolManager-Task#2
  • 【软件工程】符号执行与约束求解缺陷检测方法
  • MySQL性能优化
  • RAG-MCP:基于检索增强生成的大模型工具选择优化框架
  • Cross-Site Scripting(XSS)
  • AT9850B—单北斗导航定位芯片
  • 【leetcode】94. 二叉树的中序遍历
  • 逻辑回归(二分类)
  • Linux的日志管理
  • 青少年ctf平台应急响应-应急响应2
  • 在vue3中使用Cesium的保姆教程
  • 【2025年软考中级】第一章1.5 输入输出技术(外设)
  • 代码随想录第51天|岛屿数量(深搜)、岛屿数量(广搜)、岛屿的最大面积
  • 2025年Ai写PPT工具推荐,这5款Ai工具可以一键生成专业PPT
  • Java—— 方法引用 : :
  • 【第76例】IPD流程实战:华为业务流程架构BPA进化的4个阶段
  • ROS2学习(3)------架构概述
  • 【数据仓库面试题合集①】数据建模高频面试题及解析
  • 平衡智慧在日常生活中的落地实践:构建和谐生活的行动指南
  • MYSQL创建索引的原则