提醒:部分连接需要翻墙哦 持续更新请关注「3306π」公众号,也欢迎交流关于MySQL8.0的新特性和bug

一 关于MySQL Server的改进

1.1 redo log 重构

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

  1. http://dimitrik.free.fr/blog/archives/2017/10/mysql-performance-80-redesigned-redo-log-readwrite-workloads-scalability.html

1.2 MySQL DDL

在MySQL8.0中实现了DDL的原子性。

  1. https://mysqlserverteam.com/atomic-ddl-in-mysql-8-0/

1.3 直方图

在MySQL8.0中添加了直方图的概念。用于索引的统计和分析。

  1. https://mysqlserverteam.com/histogram-statistics-in-mysql/

1.4 降序索引

MySQL 8.0 开始提供按降序啦~

  1. https://dev.mysql.com/doc/refman/8.0/en/descending-indexes.html

1.5 隐藏索引

MySQL8.0支持隐藏索引,在对索引的添加和修改,可以通过隐藏索引来实现,方便了索引的管理

  1. https://dev.mysql.com/doc/refman/8.0/en/invisible-indexes.html

1.6 临时表的改进

在5.7以来,所有内部临时表成为”ibtmp1”的共享表空间。此外临时表的元数据也存储在内存中。 在MySQL8.0中 MEMORY存储引擎也将被TempTable存储引擎替换为内部临时表的默认存储引擎。这个新引擎为ARCHAR和VARBINARY列提供更高效的存储空间。

  1. https://dev.mysql.com/doc/refman/8.0/en/internal-temporary-tables.html

1.7 持久的全局变量 MySQL8.0 通过新语法restart,使下次重启仍然生效。

  1. http://lefred.be/content/mysql-8-0-changing-configuration-easily-and-cloud-friendly/

1.8 redo和undo的加密

在MysQL 5.7中,可以为每个表的表空间进行加密。而在MySQL8.0中,还可以为UNDO和REDO LOG进行加密。从而提高了MySQL的安全性

  1. https://dev.mysql.com/doc/refman/8.0/en/innodb-tablespace-encryption.html#innodb-tablespace-encryption-redo-log

1.9 Innodb 锁的修改

在SQL里添加参数FOR UPDATE NOWAITFOR UPDATE SKIP LOCKED 可以设置跳过锁的等待,或者跳过锁定。

  1. https://dev.mysql.com/doc/refman/8.0/en/innodb-locking-reads.html#innodb-locking-reads-nowait-skip-locked

1.10 窗口函数

在MySQL8.0中 添加了窗口函数。更好的用于数据分析

  1. http://elephantdolphin.blogspot.com/2017/09/mysql-8s-windowing-function-part-1.html

1.11 新的优化器

在MySQL 8.0.3中引入了新的优化器SET_VAR,用于在SQL中指定参数配置。

  1. https://mysqlserverteam.com/new-optimizer-hint-for-changing-the-session-system-variable/

1.12 角色

在MySQL8.0中 添加了角色的功能。更方便了用户的管理

  1. http://datacharmer.blogspot.com/2017/09/revisiting-roles-in-mysql-80.html

1.13 字符集的修改

在MySQL8.0.1中 MySQL支持了Unicode 9.0,并且修改了默认字符集为utf8mb4

  1. http://lefred.be/content/mysql-clients-and-emojis/

二 关于MySQL 复制的改进

2.1 复制方面修改

在MySQL8.0.3中 关于binlog和复制方面的新的改变。

  1. http://datacharmer.blogspot.com/2017/09/revisiting-roles-in-mysql-80.html

2.2 更高效josn复制

在MySQL8.0.3中关于JSON复制更高效,并提供了新的json功能。在binlog中只记录了update修改的内容,而不是全部记录。

  1. https://mysqlhighavailability.com/efficient-json-replication-in-mysql-8-0/

2.3 复制增强

在MySQL8.0.3关于对复制的默认参数的修改和对组复制增加了 动态跟踪和调试日志和更多的性能方面的监控工具

  1. https://mysqlhighavailability.com/replication-features-in-mysql-8-0-3/

2.4 MySQL 复制新功能

在MySQL8.0中对于复制的改进,增加了可观察性,提供了复制的效率(基于WRITESET的并行复制)

  1. https://mysqlhighavailability.com/mysql-8-0-new-features-in-replication/

三 关于MySQL MGR的改进

3.1 组复制白名单的支持

在MySQL8.0.4 中组复制的白名单的支持。有效的提高了组复制更加安全。

  1. https://mysqlhighavailability.com/hostname-support-in-group-replication-whitelist/

3.2 MySQL INNODB Cluster 新功能

在MySQL INNODB Cluster 新添加的功能,了解一下

  1. https://mysqlserverteam.com/mysql-innodb-cluster-whats-new-in-the-8-0-ga-release/

3.3 MySQL MGR的监控

提高了MySQL组复制的可观察性和可管理性,在MySQL8.0.4中增强了相关工具

  1. https://mysqlhighavailability.com/more-p_s-instrumentation-for-group-replication/

四 关于MySQL bug修复

4.1 自增列bug修复(199)

在MySQL8.0 关于自增列的bug的修复。不在采用max(自增id)+1的做法来确定下一个自增id。

  1. http://lefred.be/content/bye-bye-bug-199/