今天,让我们看一下MySQL8.0提升数据库管理员工作效率的十大改进。
从一大堆特性你们找出十点并不太容易,以下是这十大特性:
1.临时表的改进
2.持续的全局变量
3.取消默认MyISAM系统表
4.UNDO空间回收
5.UTF8性能改进
6.取消Query Cache
7.原子DDL
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当然是选择支持他啦!