【重磅】MySQL 8.0 pre release看点

导读

MySQL 8.0即将发布,一起来看看都有什么料。

昨天就收到了官方发给ACEs的邮件,不过今天白天一直在忙着给新房子做保洁,没来得及认真查看邮件内容,只是简单扫了一眼,整体感觉还是有很多惊喜,不过也大体上在意料之中。

重大变更

彻底将数据字典表引擎从MyISAM改为InnoDB。显然地,这是要更进一步放弃MyISAM引擎的节奏,还在负隅顽抗的亲们,要认清形势了,哈哈。事实上,我当初的预期是在5.7就该这么做的。

增加了ROLE特性。这是继续向ORACLE看齐啊,我个人没啥特别感觉。

修改默认字符集为utf8mb4。这个,见仁见智吧,各有喜好,不管怎样,也算是紧跟着时代发展的决定了。

新增INVISIBLE(不可见)索引属性。可将一个索引设置为不可见,那么查询优化器不再识别该索引。这么做的用意是,方便DBA判断某个索引过一阵子是否可以删除,不再担心误杀。

位运算功能增强。以前只能针对INT类型做位运算,现在增加支持二进制类型的运算,比如 [VAR]BINARY/[TINY|MEDIUM|LONG]BLOB 等多种类型。另外,也支持对 IPV6 和 UUID 类型的位运算。

在线修改全局选项(GLOBAL VARIABLES)时,增加 PERSIST 关键字后,可以将该调整持久化,即便实例重启。这就可以避免了在线修改某些选项后,忘了同时修改 my.cnf,造成了实例重启后,这个修改又被恢复原样的问题。这个功能显然也是在学习ORACLE的控制文件做法呀。

增强P_S(performance_schema)功能,主要有几点:

可以在P_S中直接查看错误日志;

在P_S中增加了类似自适应哈希索引的索引机制,便于快速检索P_S中的数据;

在线修改全局选项(GLOBAL VARIABLES)时,增加 PERSIST 关键字后,可以将该调整持久化,即便实例重启。这就可以避免了在线修改某些选项后,忘了同时修改 my.cnf,造成了实例重启后,这个修改又被恢复原样的问题。这个功能显然也是在学习ORACLE的控制文件做法呀。

重构SQL解析器。简单来说,原先的解析器有严重的问题,维护性、扩展性都不好,在8.0里进行了重构,以后会做的更牛逼。

查询优化器Hints功能增强。在5.6及更早版本中,子查询中的派生表总是要进行物化,效率很低。从5.7开始,优化器会根据情况进行判断,自行决定在哪些情形下需要物化,哪些直接合并进外部查询中,通常来说,后一种做法效率会搞很多。在8.0中,可以在SQL中增加 /+ merge / 关键字来决定哪些情形下将派生表合并到外部查询中以提升查询效率。

查询优化器功能增强。它会判断InnoDB Buffer中数据、索引缓冲比例的情况,决定每个SQL的访问模式,尽量避免发生物理读。

增加直方图功能。不知道直方图什么意思的话,可以了解下MariaDB分支中的QUERY RESPONSE TIME这个插件的功能,和这个基本相似。又是学习ORACLE的做法呀,汗(⊙﹏⊙)b

GIS功能增强。增加了经度、纬度、平面地图等功能。

提高数据扫描查询效率。例如下面这样的SQL大概能有5-20%的效率提升:

SELECT * FROM t;
或是
SELECT * FROM t WHERE pk BETWEEN 1000 AND 10000;

增强InnoDB引擎中部分读取或更新BLOB数据类型的效率。

InnoDB Memcached功能增强,增加一次取多个值(mget),以及范围搜索。

修复了InnoDB重启后,自增值丢失的bug,这个bug历史非常悠久(bug id是199,可想而知,嗯...)。

会对那些损坏的数据页加上标记,数据库实例在进行recovery时,就会忽略这些page了。

临时表增强。首先,将压缩类型临时表映射成未压缩格式。其次,将临时表的元数据存储在内存中。

InnoDB性能大幅提升,主要做了几个事情:

可以把想通table ID组内的undo数据批量purge;

废除buffer pool mutex。将原来一个mutex拆分成多个,提高并发;

拆分LOCK_thd_list 和 LOCK_thd_remove 这两个mutex,大约可提高线程链接效率5%。

MySQL复制功能方面的改进或提升不多,这个让我非常诧异,我也就没写出来了。

写到凌晨一点半,实在有点累(开头说过,今天做了一天保洁)。其他更多新特性,我大概过了一眼,好像不是太有诱惑性,这次就先不列出来了。

毕竟,现在还只是pre release,在后续的计划中,肯定还会发生很大变化。比如这次就完全没提到group replication,也压根没提到之前广大中国MySQL用户提交给官方的新功能需求,汗一个(⊙﹏⊙)b

再小小吐槽下,安装包真的是是越做越大了,建议官方发布的时候,再提供一个strip过后的二进制包吧,下载起来更快一些~~~

好了,先到这里,下次再扯。

文章转自老叶茶馆公众号,原文链接:https://mp.weixin.qq.com/s/z6-ivNmjpSiB8mKyKRJyTA

时间: 2024-08-29 04:29:19

【重磅】MySQL 8.0 pre release看点的相关文章

MySQL 8.0.2复制新特性抢鲜看

MySQL 8 正在变得原来越好,而且这也在我们MySQL复制研发团队引起了一阵热潮.我们一直致力于全面提升MySQL复制,通过引入新的和一些有趣的功能.此外,我们还听取了社区的建议和反馈.因此,我们很荣幸能够与你一同见证最新版本(MySQL 8.0.2)的里程碑式的发布,为此我们总结了其中的一些值得注意的变化.跟随我们下面的博客,我们将会分享这些新功能的一些见解. MySQL 8 is shaping up quite nicely. And we are having a blast in

MYSQL · 新特性 · MySQL 8.0对Parser所做的改进

背景介绍 众所周知,MySQL Parser是利用C/C++实现的开源yacc/lex组合,也就是 GNU bison/flex.Flex负责生成tokens, Bison负责语法解析.开始介绍MySQL 8.0的新特新之前,我们先简单了解一下通用的两种Parser.一种是Bottom-up parser,另外一种是Top-down parser. Bottom-up parser Bottom-up解析是从parse tree底层开始向上构造,然后将每个token移进(shift),进而规约(

MySQL 4.0 升级到5.0

由于需要,从4.0直接升级到5.0,查看了一下changelog,发现主要有以下变化: 一.从 4.0 到 4.1 的主要变化 如果在4.1.0到4.1.3版本的MySQL中创建了包含 TIMESTAMP 字段的 InnoDB 表.则在升级到4.1.4及更高时需要重建表,因为存储格式发生变化了 字符串根据标准SQL来比较:比较之前不删除末尾的空格,以前用末尾空格扩展了比较短的字符串.现在的结果是 'a' > 'a ',以前则不这样.可以用 mysqlcheck 来检查一下数据表 TIMESTAM

MySQL 5.0 新特性--存储过程

Introduction 简介 MySQL 5.0 新特性教程是为需要了解5.0版本新特性的MySQL老用户而写的.简单的来说是介绍了"存储过程.触发器.视图.信息架构视图",在此感谢译者陈朋奕的努力. 希望这本书能像内行专家那样与您进行对话,用简单的问题.例子让你学到需要的知识.为了达到这样的目的,我会从每一个细节开始慢慢的为大家建立概念,最后会给大家展示较大的实用例,在学习之前也许大家会认为这个用例很难,但是只要跟着课程去学,相信很快就能掌握. Conventions and St

MySQL 5.0新特性教程 存储过程:第二讲

Why MySQL Statements are Legal in a Procedure Body 什么MySQL语句在存储过程体中是合法的? 什么样的SQL语句在Mysql存储过程中才是合法的呢?你可以创建一个包含INSERT, UPDATE,DELETE, SELECT, DROP, CREATE, REPLACE等的语句.你唯一需要记住的是如果代码中包含MySQL扩充功能,那么代码将不能移植.在标准SQL语句中:任何数据库定义语言都是合法的,如: CREATE PROCEDURE p (

MySQL 5.0新特性教程 存储过程:第一讲

mysql|存储过程|教程 作者:mysql AB;翻译:陈朋奕 Introduction 简介 MySQL 5.0 新特性教程是为需要了解5.0版本新特性的MySQL老用户而写的.简单的来说是介绍了"存储过程.触发器.视图.信息架构视图",在此感谢译者陈朋奕的努力. 希望这本书能像内行专家那样与您进行对话,用简单的问题.例子让你学到需要的知识.为了达到这样的目的,我会从每一个细节开始慢慢的为大家建立概念,最后会给大家展示较大的实用例,在学习之前也许大家会认为这个用例很难,但是只要跟着

MySQL 5.0 数据库的新特性的存储过程

当你提交一个查询的时候,MySQL会分析它,看是否可以做一些优化使处理该查询的速度更快.这一部分将介绍查询优化器是如何工作的.如果你想知道MySQL采用的优化手段,可以查看MySQL参考手册. 当然,MySQL查询优化器也利用了索引,但是它也使用了其它一些信息.例如,如果你提交如下所示的查询,那么无论数据表有多大,MySQL执行它的速度都会非常快: SELECT * FROM tbl_name WHERE 0: 在这个例子中,MySQL查看WHERE子句,认识到没有符合查询条件的数据行,因此根本

MySQL 4.0升级到5.0

由于需要,从4.0直接升级到5.0,查看了一下changelog,发现主要有以下变化: 一.从 4.0 到 4.1 的主要变化 如果在4.1.0到4.1.3版本的MySQL中创建了包含 TIMESTAMP 字段的 InnoDB 表.则在升级到4.1.4及更高时需要重建表,因为存储格式发生变化了 字符串根据标准SQL来比较:比 较之前不删除末尾的空格,以前用末尾空格扩展了比较短的字符串.现在的结果是 'a' > 'a\t',以前则不这样.可以用 mysqlcheck 来检查一下数据表 TIMEST

MySQL 5.0新特性教程 存储过程:第一讲

Introduction 简介 MySQL 5.0 新特性教程是为需要了解5.0版本新特性的MySQL老用户而写的.简单的来说是介绍了"存储过程.触发器.视图.信息架构视图",在此感谢译者陈朋奕的努力. 希望这本书能像内行专家那样与您进行对话,用简单的问题.例子让你学到需要的知识.为了达到这样的目的,我会从每一个细节开始慢慢的为大家建立概念,最后会给大家展示较大的实用例,在学习之前也许大家会认为这个用例很难,但是只要跟着课程去学,相信很快就能掌握. Conventions and St