我们为何对MySQL 8.0的到来感到兴奋!

一大早收到一封oracle官方发来的邮件,邀请我参加mysql改版的网路研讨会。作为一个后端开发者,想必对mysql是非常是熟悉了。下面来聊一聊mysql8.0的新特性。

临时表的改进

在MySQL5.7中,所有的临时表都被创建在一个叫“ibtmp1”的表空间中。另外,临时表的元数据也将存储在内存中(不再存储在frm文件中)。

在MySQL8.0中,使用临时表存储引擎作为临时表(为优化JOIN、UNION等操作而创建的)存储的默认引擎,从而替换掉了原有的内存存储引擎。

新的引擎使得VARCHAR和VARBINARY列的存储更为高效(所有存储空间得到完全分配)。

持续的全局变量

MySQL8.0现在可以设置变量并使其改变持续到服务器重新启动。

使用此语法结合新的RESTART命令,可以非常容易的从shell中配置MySQL。这对云计算用户是一个十分友好的功能。

取消默认MyISAM系统表

由于采用了新的本地数据字典,现在我们不在需要MyISAM系统表了!

这些表和数据字典表现在都在一个名为mysql.idb的InNoDB表空间文件中。

这意味着如果你没有明确使用MyISAM表(为了你的数据,我们并不建议这样做),你可以创建一个没有任何MyISAM表的MySQL实例。

UNDO空间回收

在MySQL5.7中,我们已经可以截断UNDO空间了(设置innodb_undo_log_truncate,默认情况下禁用)。

在MySQL8中,我们改进了磁盘格式来使得每个UNDO表有大量的UNDO段。

此外,现在默认为两个单独的UNDO表空间(而非InnoDB系统表空间(最小为2,大小动态变化))中创建UNDO段。

我们不推荐使用innodb_undo_tablespaces来设置该值,因为我们将提供SQL命令让数据库管理员与UNDO表空间进行交互。

自动截断UNDO表空间默认启用。

UTF8性能改进

UTF8性能

由于默认的字符集已经从latin1改为utf8mb4,因此现在UTF8的速度要快得多,在特定查询时速度提高了1800%! Emojis现在无处不在,MySQL当然是选择支持他啦!??

取消Query Cache

我在性能审计中建议的第一件事就是禁用Query Cache,因为它给设计带来了很多麻烦。

MySQL QC造成的问题比它解决问题要多的多。因此我们决定在MySQL 8.0中取消它,因为大家就不应该使用它。

如果您的工作负载需要Query Cache,那么您应该改用ProxySQL替代Query Cache。

原子DDL

由于采用了新的数据字典,MySQL 8.0现在支持原子数据定义语句(原子DDL)。

这意味着当执行DDL时,数据字典更新,存储引擎操作以及二进制日志中的写入操作会合并到单个原子事务中,该事务要么完全执行,要么根本不执行。

这提高了DDL的稳定性保证未完成的DDL不会留下任何不完整的数据。

8.更快、性能更好的Schema和Information Schema

我们对Schema进行了许多改进,如假索引和直方图。

得益于假索引的存在,像SELECT * FROM sys.session这样的查询速度提高了30倍。

查询尽可能避免进行表扫描,并且索引的使用可大大缩短执行时间。

除此之外,Performance Schema还提供语句延迟的直方图。 新的直方图也使得优化器更为高效。

新的数据字典也使得Information Schema得到了改进,现在不需要大量的.frm表结构定义文件。

另外Information Schema现在支持扩展到超过1,000,000张表啦!

角色管理

MySQL 8.0中添加了SQL角色功能。 角色是指定的拥有特定权限的集合。 像用户帐户一样,角色可以拥有授予和撤消的权限。

角色可以默认或采用session修改。 也可强制设置角色。

加密表空间中的REDO日志和UNDO日志都将被加密

在MySQL 5.7中,可以为存储在每个表中的表加密InnoDB表空间。 在MySQL 8.0中,我们通过为UNDO和REDO日志添加加密来完成此功能。

除此以外,还有很多改进我没有列完。 还有很多其他不错的功能。 我想在下面再列出一些我认为重要的(尽管所有的改进都很重要??)

原文发布于微信公众号 - java工会(javagonghui)

原文发表时间:2018-05-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏葡萄城控件技术团队

给大家分享两款正在使用的reflector插件

推荐两款神器:Deblector和reflexil Deblector 它的名字是Debug 和 reflector 两个单词的结合。就是用来调试的。 简单的说...

1899
来自专栏恰同学骚年

自己动手写工具:自动点击小插件

  当我们需要对一个网页上的某个按钮进行多次点击以求得某种“好处”的时候,例如天猫的抢红包活动,我们可能需要点击N次之后才有可能获得一个红包,但是这个N是一个未...

662
来自专栏Java技术分享

基于Metronic的Bootstrap开发框架经验总结(5)--Bootstrap文件上传插件File Input的使用

Bootstrap文件上传插件File Input是一个不错的文件上传控件,但是搜索使用到的案例不多,使用的时候,也是一步一个脚印一样摸着石头过河,这个控件在界...

2369
来自专栏青枫的专栏

c语言基础学习02_windows系统下的cmd命令

============================================================================= 注意...

622
来自专栏编程坑太多

自己总结的,苦心总结的linux命令

1274
来自专栏木头编程 - moTzxx

ThinkPHP 5.1自定义404界面的配置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

1012
来自专栏文渊之博

数据库复制(一)--复制介绍

介绍: 在运行着的数据库驱动的应用程序中,SQL复制能解决许多问题。由于发送/订阅的模式不是十分容易理解,复杂的脚本语言和监视复制系统也是需要一定的思想在里面。...

1716
来自专栏Java学习之路

虚拟机工作站创建虚拟机并安装Linux教程 一丶什么是Linux:二丶为什么要学Linux:三丶安装虚拟机工作站和初始化虚拟机:四丶安装Linux操作系统

前言: 今天开始学习一下Linux,之前早就想看,但是一直没时间,最近把其他知识整理完了,终于有时间来看一下Linux了。 本节只是安装虚拟机工作站,虚拟机...

3665
来自专栏魏艾斯博客www.vpsss.net

Windows 远程桌面连接使用教程

4775
来自专栏xcywt

《Linux命令行与shell脚本编程大全》第二十六章 一些有意思的脚本

26.1 发送消息 26.1.1 功能分析 1.确定系统中都有谁 $who 给出的信息包括用户名 用户所在终端 用户登入系统的时间 2.启用消息功能 用户可以禁...

1997

扫码关注云+社区