關(guān)于MySQL 8.0的幾個(gè)重點(diǎn),都在這里
一、關(guān)于MySQL Server的改進(jìn)
1.1 redo log 重構(gòu)
在MySQL8.0中重新設(shè)計(jì)了redo log,主要改進(jìn)fsync,使得效率更高,減少鎖,優(yōu)化flush機(jī)制,不會(huì)頻繁flush。同時(shí),支持更高用戶并發(fā)請(qǐng)求。
1.2 MySQL DDL
在MySQL8.0中實(shí)現(xiàn)了DDL的原子性。
https://mysqlserverteam.com/atomic-ddl-in-mysql-8-0/
1.3 直方圖
在MySQL8.0中添加了直方圖的概念,用于索引的統(tǒng)計(jì)和分析。
https://mysqlserverteam.com/histogram-statistics-in-mysql/
1.4 降序索引
MySQL 8.0 開(kāi)始提供按降序啦~
https://dev.mysql.com/doc/refman/8.0/en/descending-indexes.html
1.5 隱藏索引
MySQL8.0支持隱藏索引,在對(duì)索引的添加和修改,可以通過(guò)隱藏索引來(lái)實(shí)現(xiàn),方便了索引的管理。
https://dev.mysql.com/doc/refman/8.0/en/invisible-indexes.html
1.6 臨時(shí)表的改進(jìn)
在5.7以來(lái),所有內(nèi)部臨時(shí)表成為"ibtmp1"的共享表空間。此外臨時(shí)表的元數(shù)據(jù)也存儲(chǔ)在內(nèi)存中。
在MySQL8.0中,MEMORY存儲(chǔ)引擎也將被TempTable存儲(chǔ)引擎替換為內(nèi)部臨時(shí)表的默認(rèn)存儲(chǔ)引擎。這個(gè)新引擎為VARCHAR和VARBINARY列提供更高效的存儲(chǔ)空間。
https://dev.mysql.com/doc/refman/8.0/en/internal-temporary-tables.html
1.7 持久的全局變量
MySQL8.0通過(guò)新語(yǔ)法restart,使下次重啟仍然生效。
http://lefred.be/content/mysql-8-0-changing-configuration-easily-and-cloud-friendly/
1.8 redo和undo的加密
在MysQL 5.7中,可以為每個(gè)表的表空間進(jìn)行加密。而在MySQL8.0中,還可以為UNDO和REDO LOG進(jìn)行加密,從而提高了MySQL的安全性。
1.9 Innodb 鎖的修改
在SQL里添加參數(shù)FOR UPDATE NOWAIT和FOR UPDATE SKIP LOCKED,可以設(shè)置跳過(guò)鎖的等待,或者跳過(guò)鎖定。
1.10 窗口函數(shù)
在MySQL8.0中,添加了窗口函數(shù),它可以用來(lái)實(shí)現(xiàn)若干新的查詢方式,以便更好地用于數(shù)據(jù)統(tǒng)計(jì)和分析。
http://elephantdolphin.blogspot.com/2017/09/mysql-8s-windowing-function-part-1.html
1.11 新的優(yōu)化器
在MySQL 8.0.3中,引入了新的優(yōu)化器SET_VAR,用于在SQL中指定參數(shù)配置。
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,并且修改了默認(rèn)字符集為utf8mb4
http://lefred.be/content/mysql-clients-and-emojis/
二、關(guān)于MySQL 復(fù)制的改進(jìn)
2.1 復(fù)制方面修改
在MySQL8.0.3中,關(guān)于binlog和復(fù)制方面的新的改變。
http://datacharmer.blogspot.com/2017/09/revisiting-roles-in-mysql-80.html
2.2 更高效Json復(fù)制
在MySQL8.0.3中,關(guān)于JSON復(fù)制更高效,并提供了新的json功能。在binlog中只記錄了update修改的內(nèi)容,而不是全部記錄。
https://mysqlhighavailability.com/efficient-json-replication-in-mysql-8-0/
2.3 復(fù)制增強(qiáng)
在MySQL8.0.3中,關(guān)于對(duì)復(fù)制的默認(rèn)參數(shù)的修改、對(duì)組復(fù)制,都增加了“動(dòng)態(tài)跟蹤、調(diào)試日志”等更多性能方面的監(jiān)控工具。
https://mysqlhighavailability.com/replication-features-in-mysql-8-0-3/
2.4 MySQL 復(fù)制新功能
在MySQL8.0中,對(duì)于復(fù)制的改進(jìn),增加了可觀察性,提供了復(fù)制的效率(基于WRITESET的并行復(fù)制)。
https://mysqlhighavailability.com/mysql-8-0-new-features-in-replication/
三、關(guān)于MySQL MGR的改進(jìn)
3.1 組復(fù)制白名單的支持
在MySQL8.0.4 中,對(duì)組復(fù)制白名單的支持,有效地提高了組復(fù)制的安全性。
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的監(jiān)控
提高了MySQL組復(fù)制的可觀察性和可管理性,并在MySQL8.0.4中增強(qiáng)了相關(guān)工具。
https://mysqlhighavailability.com/more-p_s-instrumentation-for-group-replication/
四、關(guān)于MySQL bug修復(fù)
4.1 自增列bug修復(fù)(199)
在MySQL8.0 關(guān)于自增列的bug的修復(fù)。不再采用max(自增id)+1的做法來(lái)確定下一個(gè)自增id。