轉自 關於MySQL 8.0的幾個重點,都在這裏 https://mp.weixin.qq.com/s/QUpk9uuS2JTli1GT6HuORA
1、關於MySQL Server的改進html
1.1 redo log 重構 mysql
在MySQL8.0中從新設計了redo log,主要改進fsync,使得效率更高,減小鎖,優化flush機制,不會頻繁flush。同時,支持更高用戶併發請求。sql
http://dimitrik.free.fr/blog/archives/2017/10/mysql-performance-80-redesigned-redo-log-readwrite-workloads-scalability.html
1.2 MySQL DDL json
在MySQL8.0中實現了DDL的原子性。安全
https://mysqlserverteam.com/atomic-ddl-in-mysql-8-0/
1.3 直方圖 session
在MySQL8.0中添加了直方圖的概念,用於索引的統計和分析。antd
https://mysqlserverteam.com/histogram-statistics-in-mysql/
1.4 降序索引 併發
MySQL 8.0 開始提供按降序啦~函數
https://dev.mysql.com/doc/refman/8.0/en/descending-indexes.html
1.5 隱藏索引 工具
MySQL8.0支持隱藏索引,在對索引的添加和修改,能夠經過隱藏索引來實現,方便了索引的管理。
https://dev.mysql.com/doc/refman/8.0/en/invisible-indexes.html
1.6 臨時表的改進
在5.7以來,全部內部臨時表成爲"ibtmp1"的共享表空間。此外臨時表的元數據也存儲在內存中。
在MySQL8.0中,MEMORY存儲引擎也將被TempTable存儲引擎替換爲內部臨時表的默認存儲引擎。這個新引擎VARCHAR和VARBINARY列提供更高效的存儲空間。
https://dev.mysql.com/doc/refman/8.0/en/internal-temporary-tables.html
1.7 持久的全局變量
MySQL8.0經過新語法restart,使下次重啓仍然生效。
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的安全性。
https://dev.mysql.com/doc/refman/8.0/en/innodb-tablespace-encryption.html#innodb-tablespace-encryption-redo-log
1.9 Innodb 鎖的修改
在SQL裏添加參數FOR UPDATE NOWAIT和FOR UPDATE SKIP LOCKED,能夠設置跳過鎖的等待,或者跳過鎖定。
https://dev.mysql.com/doc/refman/8.0/en/innodb-locking-reads.html#innodb-locking-reads-nowait-skip-locked
1.10 窗口函數
在MySQL8.0中,添加了窗口函數,它能夠用來實現若干新的查詢方式,以便更好地用於數據統計和分析。
http://elephantdolphin.blogspot.com/2017/09/mysql-8s-windowing-function-part-1.html
1.11 新的優化器
在MySQL 8.0.3中,引入了新的優化器SET_VAR,用於在SQL中指定參數配置。
https://mysqlserverteam.com/new-optimizer-hint-for-changing-the-session-system-variable/
1.12 角色
在MySQL8.0中,添加了角色的功能。更方便了用戶的管理
http://datacharmer.blogspot.com/2017/09/revisiting-roles-in-mysql-80.html
1.13 字符集的修改
在MySQL8.0.1中,MySQL支持了Unicode 9.0,而且修改了默認字符集爲utf8mb4
http://lefred.be/content/mysql-clients-and-emojis/
2、關於MySQL 複製的改進
2.1 複製方面修改
在MySQL8.0.3中,關於binlog和複製方面的新的改變。
http://datacharmer.blogspot.com/2017/09/revisiting-roles-in-mysql-80.html
2.2 更高效json複製
在MySQL8.0.3中,關於JSON複製更高效,並提供了新的json功能。在binlog中只記錄了update修改的內容,而不是所有記錄。
https://mysqlhighavailability.com/efficient-json-replication-in-mysql-8-0/
2.3 複製加強
在MySQL8.0.3中,關於對複製的默認參數的修改、對組複製,都增長了「動態跟蹤、調試日誌」等更多性能方面的監控工具。
https://mysqlhighavailability.com/replication-features-in-mysql-8-0-3/
2.4 MySQL 複製新功能
在MySQL8.0中,對於複製的改進,增長了可觀察性,提供了複製的效率(基於WRITESET的並行複製)。
https://mysqlhighavailability.com/mysql-8-0-new-features-in-replication/
3、關於MySQL MGR的改進
3.1 組複製白名單的支持
在MySQL8.0.4 中,對組複製白名單的支持,有效地提升了組複製的安全性。
https://mysqlhighavailability.com/hostname-support-in-group-replication-whitelist/
3.2 MySQL INNODB Cluster 新功能
在MySQL INNODB Cluster 新增長的功能:
https://mysqlserverteam.com/mysql-innodb-cluster-whats-new-in-the-8-0-ga-release/
3.3 MySQL MGR的監控
提升了MySQL組複製的可觀察性和可管理性,並在MySQL8.0.4中加強了相關工具。
https://mysqlhighavailability.com/more-p_s-instrumentation-for-group-replication/
4、關於MySQL bug修復
4.1 自增列bug修復(199)
在MySQL8.0 關於自增列的bug的修復。再也不採用max(自增id)+1的作法來肯定下一個自增id。
http://lefred.be/content/bye-bye-bug-199/