欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

MySQL 8.0版本新特性详细介绍

程序员文章站 2022-04-02 14:50:10
...
MySQL 开发团队宣布 MySQL 8.0.0 开发里程碑版本(DMR)发布!之后,可能有人会惊奇 MySQL 为何从 5.x 一下跳跃到了 8.0。事实上,MySQL 5.x 系列已经延续了很多年,从被 Oracle 收购之前就是 5.1,而收购之后一直维持在 5.x,比如 5.5,5.6,5.7 等等。其实,如果按照原本的发布节奏,可以把 5.6.x 当成 6.x,5.7.x 当成 7.x。所以,只是换了版本命名方式而已。

MySQL是众多网站技术栈中的标准配置,是广受欢迎的开源数据库,已经推出了8.0的第一个候选发行版本。

MySQL 8.0的新特性包括:

对Unicode 9.0的开箱即用的完整支持

支持窗口函数和递归SQL语法,这在以往是不可能或者很难才能编写这样的查询语句

对原生JSON数据和文档存储功能的增强支持

MySQL 8.0的发布,跳过了多个版本号(从5.5开始),由于6.0修改和7.0是用来保留做MySQL的集群版本,因此采用了8.0的版本号。

MySQL 8.0的预期发布日期

根据MySQL的策略“一个新的【一般】版本发布的周期是18-24个月”, MySQL并没有承诺MySQL 8.0的发布日期。最近一次MySQL 5.7的发布是2015年的10月21日,所以MySQL 8.0的正式版本发行可能在2017年10月。

MySQL 8.0标准化Unicode之路

默认支持Unicode可以说是MySql 8.0最大的改变之一。 长期以来,MySQL一直存在着对Unicode的很多没能解决的问题。 所以,对MySQL 8.0来说,一个长期的计划是尽可能多地修复那些持续的Unicode问题。

MySQL 8.0不再将latin1设为默认的编码,以防止新用户使用了这个有问题的遗留选项。现在推荐utf8mb4作为MySQL 8.0的默认字符集设置,其目的是比现在不在推荐的utf8mb3字符设置更快,同时也支持更灵活的排序并区分大小写。

增强的Unicode不但支持非西方的字符集合也支持目前日益发展的emoji表情。

MySQL 8.0支持窗口函数

很多SQL语言标准的实现(如Oracle,译者注)都支持窗口函数,它是能实现跨多行聚合计算的功能,并仍然允许从查询中访问到单独的行。在以前的MySQL版本中,不使用窗口函数是可以实现的,但是很麻烦而且速度慢。为了克服这个缺陷,MySQL 8.0通过标准的SQL关键字OVER来实现窗口函数的功能,有点象其竞争对手PostgreSQL的实现方法。

同样另一个功能是递归公用表表达式,它能让你针对子查询进行递归操作,而无需使用游标或其他有损性能的解决方法。

MySQL 8.0更好支持文档型数据库和JSON

MySQL 5.7支持JSON,这让MySQL 能使用原生JSON和NoSQL数据库竞争。MySQL 8.0 扩展了对JSON的支持,并且性能更加好,增加了从JSON查询中返回范围的功能(就象SQL语句”top n”的功能),也增加了新的聚合函数能让在同一个查询语句中,能结合MySQL原生的结构化数据和JSON的半结构化数据。

与JSON相关的另一项改进包括MySQL的文档存储。 对MySQL文档存储的读取和写入在事务上是一致的,允许对JSON数据进行更改的回滚操作。文档数据以开放的、用于地理空间数据的GeoJSON格式存储,并且能被索引,因此可以进行领接方式的搜索。

MySQL 8.0的其他关键特性

其他MySQL 8.0计划更新的特性包括:

在锁定行方面增加了更多选项,如SKIP LOCKED和NOWAIT两个选项。其中,

SKIP LOCKED允许在操作中不锁定那些需要忽略的行;NOWAIT则在遇到行的锁定的时候马上抛出错误。

MySQL能根据可用内存的总量去伸缩扩展,以更好利用虚拟机的部署。

新增“隐藏索引”的特性,这样索引可以在查询优化器中变为不可见。索引在标记为不可用后,和表的数据更改同步,但是优化器不会使用它们。对于使用隐藏索引的建议,是当不决定某个索引是否需要保留的时候,可以使用。

现在你可以下载MySQL 8.0的Windows,MacOS,Linux的若干版本,FreeBSD和Solaris;也可以下载源代码。可以在官网的下载页面中,访问其中的开发者候选版本去下载它们。

以上就是MySQL 8.0版本新特性详细介绍的详细内容,更多请关注其它相关文章!