MySQL8 十大新特性

今天,让咱们看一下MySQL8.0提高数据库管理员工做效率的十大改进。html

从一大堆特性大家找出十点并不太容易,如下是这十大特性:mysql

 

1.临时表的改进sql

2.持续的全局变量shell

3.取消默认MyISAM系统表数据库

4.UNDO空间回收性能优化

5.UTF8性能改进服务器

6.取消Query Cachesession

7.原子DDLide

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

9.角色管理

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

 

临时表的改进

 

在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日志添加加密来完成此功能。

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

 

1.持久自动增量

2.InnoDB的自校订

3.JSON性能优化

3.隐形索引

4.新的备份锁

5.资源组功能

6.额外的二进制日志元数据

7.以及OpenSSL for Community Edition

MySQL 8.0的十大新特性

相关文章
相关标签/搜索