MySQL8.0.21发布了,昨天临时在公号里放了张图片,简单粗暴地宣传了一下。今天补充一下详细信息。
在MySQL8.0.21发布之前,MySQL团队做了一个关于更名的声明,主要是将英文里比较敏感的词汇替换掉,但对中文来说影响不大,我们不存在这种歧视。
InnoDB的改进。
- 动态启用/禁用redo日志:这一功能的主要应用场景是初次进行数据导入。大家知道,为了保证数据能够完整的写入,防止意外发生时的数据丢失,MySQL会在数据写入磁盘之前,先将更改的内容写入redo日志。写入redo日志会保证数据的完整,但是写入性能上会有一定的消耗。因此可以在首次进行数据加载的时候关闭redo日志,以提升写入速度,加载完毕后,开启redo日志。通过ALTER INSTANCE ENABLE|DISABLE INNODB REDO_LOG;可以动态的开启/关闭redo日志。
- 增加了一个新的变量–innodb-validate-tablespace-paths := (ON | OFF) :当用户能够明确知道表空间文件未做过任何改动时,可以选择OFF,这时MySQL服务器启动时将不会去检查表空间文件,可以加快启动速度。这一选项主要是针对使用较旧的服务器提供的,可以避免磁盘速度过慢,服务器启动时间过长。
- 对InnoDB的lock_sys mutex进行优化:将之前使用的单一lock mutex用global latch,table shard latches,page shard latches进行替换,拆分成更细的粒度,避免以往使用单一lock mutex产生的瓶颈。
- 确保表空间文件的放置限制在已知的目录:这样做的目的是允许DBA限制创建文件的位置,避免在恢复过程中出现意外。
- 支持ACID的UNDO DDL:之前创建UNDO表空间时,没有使用redo日志,在这个版本里为其加上了redo日志,使其过程符合ACID,并且避免在截断UNDO时使用检查点。
SQL DDL
- 现在支持CREATE TABLE…SELECT 的原子性,之前该语句会当做两个不同的语句CREATE TABLE 和 SELECT INTO来执行,现在可以作为一个事物进行提交和回滚,因此也适用于MGR。
优化器
- “prefer_ordering_index” :新的优化器开关,当存在限制语句,使用group by或者order by时,可以通过它将非排序索引切换到排序索引。
- 半连接用于单表的更新和删除:通过这项改进,即使是单表也可以使用优化器的半连接优化策略,避免了以往使用硬代码的简单方法。
群组复制
- 降低group_replication_message_cache_size的最小值:使得MGR可以适用于内存容量小的服务器。
- 指定恢复数据的来源:可以指定IP和端口号,用于MGR的数据恢复阶段的数据来源。这一改进主要用于安全性和稳定性的改进。
- START GROUP_REPLICATION语句支持使用用户名、密码方式等凭据:这一改进可以避免某些环境下产生的安全性问题。
- 修改默认值:增大了group_replication_autorejoin_tries和group_replication_member_expel_timeout 的默认值,用以改善网络瞬时故障导致的群组不可用,增加了群组的稳定性。
以上内容是MySQL8.0.21带来的部分改进,欢迎您试用MySQL8.0.21!