MySQL 5.7 新特性详解

2020-08-14 14:57:11 浏览数 (1)

我们自豪的宣布 MySQL 5.7 稳定版开放下载了。 MySQL 5.7.9 是目前世界上最流行开源数据库的一令人兴奋的新版本, 比 MySQL 5.6 快 3 倍,同时还提高了可用性,可管理性和安全性。一些重要的增强功能如下:

  1. 性能和可扩展性:改进 InnoDB 的可扩展性和临时表的性能,从而实现更快的网络和大数据加载等操作。
  2. JSON支持:使用 MySQL 的 JSON 功能,你可以结合 NoSQL 的灵活和关系数据库的强大。
  3. 改进复制 以提高可用性的性能。包括多源复制,多从线程增强,在线 GTIDs,和增强的半同步复制。
  4. 性能模式 提供更好的视角。我们增加了许多新的监控功能,以减少空间和过载,使用新的 SYS 模式显著提高易用性。
  5. 安全: 我们贯彻“安全第一”的要求,许多 MySQL 5.7 新功能帮助用户保证他们数据库的安全。
  6. 优化: 我们重写了大部分解析器,优化器和成本模型。这提高了可维护性,可扩展性和性能。
  7. GIS: MySQL 5.7 全新的功能,包括 InnoDB 空间索引,使用 Boost.Geometry,同时提高完整性和标准符合性。

上述只是一些亮点,我鼓励你们深入了解。可以通过一系列的里程碑博客5.7.1,5.7.2,5.7.3,5.7.4,5.7.5,5.7.6,5.7.7,5.7.8 —甚至通过记录他们的技术规范和实施细则的个人 worklogs ,或许你只是想在 github.com/mysql 上看一下代码。我们已经实施了 365 个worklogs,添加了 1007 个 MTR 测试,并且修复了 28125.7 个具体的 bug。势不可挡的感觉,所以这个“小的”指导可能是有用的。

非常感谢开发团队的每一个成员,是你们成就了这些!我说开发是指所有人,包括:需求,设计,编码,审核,测试,bug 修复,文档,发布和实验支持,真的是一个团队的努力。非常感谢开源社区的每一个人,感谢你们反馈 bug,建议和贡献!一个世界的努力。

为 MySQL 添加 JSON 支持

使用 MySQL 的最新的 JSON 功能,你可以结合 NoSQL 的灵活和关系数据库的力量。

我们开发了一个 JSON 数据类型和一个二进制存储格式 ,使用服务器可以高效存储,检索和查找 JSON 数据(WL#8132) 。

这项工作改进了 CREATE TABLE 和 ALTER TABLE ,所以你可以创建 JSON 类型的数据列,并且它扩展了 Field 类,允许对 JSON 类型数据进行 INSERT和SELECT 操作。

我们已经引入了一系列服务端功能,内置的 JSON 函数(WL#7909),这项工作可以让用户,从其他关系数据构建 JSON 数据,从 JSON 数据中抽取关系数据, 感知 JSON 数据值和文本(效度,长度,深度,键)的结构,对JSON 数据进行检索和操作。

我们已经介绍了 JSON 比较器 ,类似于 DATE/TIME/DATETIME(日期/时间/日期时间)比较器,它允许 JSON 常量和 SQL 常量比较、JSON 变量和 SQL 变量比较(WL#8249)。比较器依赖在 WL#7909 添加的 DOM 元素的支持。比较器将 SQL 常量转换为为 JSON 变量然后比较他们的值。

我们已经实现了 JSON 变量值排序(WL#8539),即一个函数产生内部方法 filesort 所需的用老排序 JSON 值的排序键。当排序 JSON 变量时用 ORDER BY,它将会返回 JSON 比较器 WL#8249 定义的排序规则所排序的结果。

我们已经为生成的列(WL#8170)实现了一个表达式分析器。这样做可以让我们的排序和参考优化器有机会使用已经为生成的列定义的索引。关于这个功能的一个案例是在 JSON 文档上产生和自动使用索引。

我们已经在 SQL 查询(WL#8607)中加上了内联 JSON 路径表达式。MySQL 现在这样执行查询:SELECT … FROM t1 WHERE t1.json_field->”$.path.to[0].key”= 123;

生成的列&可生成索引的虚拟化列

我们第一次实现生成的列(WL#411, WL#8114)。每列的值,不像一个有规律的字段的值,没有通过用户设置而是当行创建或者更新时通过服务器使用用户定义表时定义的特殊的表达式计算。生成的列也可以被物化(被存储)或者非物化(虚拟)。关于这方面的内容可以看看 Evgeny Potemkin 的文章“在MySQL 5.7.5中的生成列“。

0 人点赞