我们为何对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 条评论
登录 后参与评论

相关文章

来自专栏jouypub

MySQL事务锁问题-Lock wait timeout exceeded

  接口响应时间超长,耗时几十秒才返回错误提示,后台日志中出现Lock wait timeout exceeded; try restarting transa...

5.9K8
来自专栏码云1024

mysql数据库

4127
来自专栏芋道源码1024

关于 MySQL 的知识点与面试常见问题都在这里

Mysql开发技巧: MySQL开发技巧(一)  MySQL开发技巧(二)  MySQL开发技巧(三)

1510
来自专栏沃趣科技

使用pg_stat_statement监控pgsql遇到的问题

pg_stat_statements是PG中监控数据库活动的重要插件,通过它可以获得SQL的统计信息,例如该SQL被调用了多少次,返回了多少记录,在读写数据上...

3805
来自专栏Java技术栈

MySQL 调优/优化的 101 个建议!

原文:http://www.monitis.com/blog/101-tips-to-mysql-tuning-and-optimization/ MySQL是...

4076
来自专栏熊二哥

MySQL快速入门

一直说要好好复习一下Mysql都木有时间,终于赶上最近新购买了阿里云,决定使用CentOS去试试.NET Core等相关的开发,于是决定好好的回顾下这部分知识,...

2357
来自专栏「3306 Pai」社区

关于MySQL 8.0的几个重点,都在这里

在MySQL8.0中重新设计了redo log,主要改进fsync,使得效率更高,减少锁,优化flush机制,不会频繁flush。同时,支持更高用户并发请求。

930
来自专栏Java面试通关手册

关于MySQL的知识点与面试常见问题都在这里

Java面试通关手册(Java学习指南,欢迎Star,会一直完善下去,欢迎建议和指导):https://github.com/Snailclimb/Java_G...

1896
来自专栏Java面试通关手册

关于MySQL的知识点与面试常见问题都在这里

我自己总结的Java学习的一些知识点以及面试问题,目前已经开源,会一直完善下去,欢迎建议和指导欢迎Star: https://github.com/Snailc...

1933
来自专栏程序员的诗和远方

django,mysql存储emoji表情,utf8mb4

今天在做后台的时候发现一个错误: Incorrect string value: '\xF0\x9F\x90\xA8' for column 'signatu...

4476

扫码关注云+社区