共計 3099 個字符,預計需要花費 8 分鐘才能閱讀完成。
MySQL 8.0 的重點都有哪些,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面丸趣 TV 小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
一、關于 MySQL Server 的改進
1.1 redo log 重構
在 MySQL8.0 中重新設計了 redo log,主要改進 fsync,使得效率更高,減少鎖,優(yōu)化 flush 機制,不會頻繁 flush。同時,支持更高用戶并發(fā)請求。
http://dimitrik.free.fr/blog/archives/2017/10/mysql-performance-80-redesigned-redo-log-readwrite-workloads-scalability.html
1.2 MySQL DDL
在 MySQL8.0 中實現(xiàn)了 DDL 的原子性。
https://mysqlserverteam.com/atomic-ddl-in-mysql-8-0/
1.3 直方圖
在 MySQL8.0 中添加了直方圖的概念,用于索引的統(tǒng)計和分析。
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 支持隱藏索引,在對索引的添加和修改,可以通過隱藏索引來實現(xiàn),方便了索引的管理。
https://dev.mysql.com/doc/refman/8.0/en/invisible-indexes.html
1.6 臨時表的改進
在 5.7 以來,所有內部臨時表成為 ibtmp1 的共享表空間。此外臨時表的元數(shù)據(jù)也存儲在內存中。
在 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 里添加參數(shù) 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 窗口函數(shù)
在 MySQL8.0 中,添加了窗口函數(shù),它可以用來實現(xiàn)若干新的查詢方式,以便更好地用于數(shù)據(jù)統(tǒng)計和分析。
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,并且修改了默認字符集為 utf8mb4
http://lefred.be/content/mysql-clients-and-emojis/
二、關于 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 中,關于對復制的默認參數(shù)的修改、對組復制,都增加了“動態(tài)跟蹤、調試日志”等更多性能方面的監(jiān)控工具。
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/
三、關于 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 的監(jiān)控
提高了 MySQL 組復制的可觀察性和可管理性,并在 MySQL8.0.4 中增強了相關工具。
https://mysqlhighavailability.com/more-p_s-instrumentation-for-group-replication/
四、關于 MySQL bug 修復
4.1 自增列 bug 修復(199)
在 MySQL8.0 關于自增列的 bug 的修復。不再采用 max(自增 id)+ 1 的做法來確定下一個自增 id。
http://lefred.be/content/bye-bye-bug-199/
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注丸趣 TV 行業(yè)資訊頻道,感謝您對丸趣 TV 的支持。