1、MySQL 8.x 引入了一系列新特性和优化,这些新特性显著提升了数据库的稳定性和性能,为开发者和数据库管理员提供了更丰富的功能和更高效的数据管理手段。以下是对 MySQL 8.x 引入的一些主要新特性的归纳:
一、查询与数据处理能力
-
窗口函数(Window Functions):
- 允许用户在 SELECT 语句中执行复杂的分析计算,例如排名、累计和等。
- 示例:使用 RANK() 函数为每个部门的员工按薪资排名。
-
公共表表达式(CTE, Common Table Expressions):
- 也称为虚拟视图,用于简化复杂查询。
- 允许在查询中定义一个或多个临时结果集,这些结果集在查询的其余部分中可以被引用。
-
增强的 JSON 支持:
- 新增了一些函数来处理 JSON 格式的数据,如 JSON_ARRAY()、JSON_EXTRACT() 等。
- 使得在 MySQL 中处理和查询 JSON 数据变得更加方便和高效。
二、存储与性能优化
-
InnoDB 引擎的改进:
- 提供了更好的性能和稳定性。
- 引入了新的特性,如隐藏索引和降序索引。
-
隐藏索引(Invisible Indexes):
- 允许用户将索引设置为隐藏状态,这样索引就不会被查询优化器使用。
- 在性能调试和优化时非常有用,因为可以观察隐藏索引对数据库性能的影响。
-
降序索引(Descending Indexes):
- 在之前的版本中,虽然语法上支持降序索引,但实际上创建的仍然是升序索引。
- MySQL 8.0 之后真正支持了降序索引(仅适用于 InnoDB 存储引擎)。
三、安全性与账户管理
-
默认的身份认证插件:
- MySQL 8.0 中默认的身份认证插件是 caching_sha2_password,替代了之前的 mysql_native_password。
- 提高了安全性,但可能导致旧版本的客户端在连接时出现身份认证错误。
-
密码策略增强:
- 允许限制重复使用以前的密码。
- 可以设置新密码不能与最近 N 次使用过的密码相同,以及新密码不能与最近 M 天内使用的密码相同。
-
角色管理:
- 引入了角色管理的功能,角色是一组权限的集合。
- 通过创建角色并赋予用户不同的角色,可以更加灵活和简便地管理权限。
四、其他新特性
-
默认编码 utf8mb4:
- utf8mb4 编码是 utf8 编码的超集,兼容 utf8,并且能存储 4 字节的表情字符。
- 解决了 MySQL 中“utf8”编码只支持最大 3 字节每字符的问题。
-
设置持久化:
- 允许将某些系统变量的设置持久化到配置文件中,以便在数据库重启后仍然保持这些设置。
-
性能优化:
- 引入了多种性能优化措施,如改进了查询优化器的算法、优化了内存管理等。
- 使得 MySQL 在处理大规模数据时更加高效和稳定。
综上所述,MySQL 8.x 引入的新特性涵盖了查询与数据处理能力、存储与性能优化、安全性与账户管理以及其他多个方面。这些新特性为开发者和数据库管理员提供了更强大的功能和更高效的数据管理手段。
2.MySQL 8.x 引入的新特性在多种应用场景中发挥着重要作用。以下是对这些新特性应用场景的详细归纳:
一、窗口函数的应用场景
-
排名和分组:
- 窗口函数可以用于计算每个分组内的排名,并根据排名进行筛选。例如,找出每个班级成绩最高的学生。
- 适用于需要对数据进行分组并计算排名的场景,如销售排名、游戏排行榜等。
-
移动平均值:
- 窗口函数可以计算在一定时间范围内,每个时间点上的数据与前几个时间点上的数据的平均值,即移动平均值。
- 适用于时间序列数据分析,如股票价格分析、销售额分析等。
-
分组累计:
- 窗口函数可以用于计算每个分组内的累计值。例如,计算每个用户的累计订单金额。
- 适用于需要对数据进行分组并计算累计值的场景,如库存统计、财务报表等。
二、公共表表达式(CTE)的应用场景
-
简化复杂查询:
- CTE 允许开发者在 SQL 查询中定义临时的结果集,使得复杂查询变得更加简洁、易读。
- 适用于需要将复杂查询拆分成多个逻辑部分的场景,以提高代码的可读性和维护性。
-
避免重复代码:
- CTE 可以在同一个查询的多个部分中被引用,避免了重复编写相同的查询代码。
- 适用于需要在多个查询中使用相同结果集的场景,以减少代码冗余和提高查询效率。
-
支持递归查询:
- CTE 支持递归查询,允许构建树形结构的查询,如组织架构、目录等。
- 适用于需要处理具有层级关系的数据的场景,如组织架构管理、目录管理等。
三、隐藏索引的应用场景
-
性能测试:
- 当需要测试删除某个索引对查询性能的影响时,可以先将其隐藏,而不是直接删除。
- 隐藏索引后,可以观察查询性能的变化,以便决定是否真正删除该索引。
-
错误排查:
- 某个查询可能因为使用了错误的索引而返回错误的结果。通过将可疑的索引隐藏,可以确定是否是该索引导致的问题。
- 适用于需要排查索引使用错误的场景,以便定位并解决问题。
-
索引重构:
- 在重构索引时,可能需要先隐藏旧的索引,然后创建新的索引,最后删除旧的索引。
- 隐藏索引可以确保在重构过程中,查询性能不会受到太大影响。
四、降序索引的应用场景
-
时间序列数据:
- 对于按照时间戳排序的数据,降序索引可以更快地获取最新的记录。
- 适用于需要频繁查询最新数据的场景,如日志记录、事件追踪等。
-
排名系统:
- 如游戏排行榜、销售数据分析等,常需要以降序方式展示前几名。
- 降序索引可以提高这些查询的效率,使得排名结果更快地呈现给用户。
五、其他新特性的应用场景
-
InnoDB 引擎的改进:
- InnoDB 引擎的改进使得 MySQL 在处理大规模数据时更加高效和稳定。
- 适用于需要处理大量数据的场景,如电子商务网站、银行系统等。
-
安全性与账户管理:
- 新的身份认证插件和密码策略增强了 MySQL 的安全性。
- 适用于对数据安全性要求较高的场景,如金融交易系统、大型企业应用系统等。
-
默认编码 utf8mb4:
- utf8mb4 编码支持更多的字符集,包括表情字符等。
- 适用于需要存储和查询包含多种字符集的数据的场景,如社交媒体平台、多语言网站等。
综上所述,MySQL 8.x 引入的新特性在多种应用场景中发挥着重要作用,提高了数据库的查询效率、简化了复杂查询、增强了安全性,并满足了不同场景下的数据处理需求。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




