MySQL 8.0.16 穩定版(GA)已於上個月發布,距推出 8.0.15 僅過去了兩個月。
Windows (x86, 32-bit), MSI Installer 8.0.16 (mysql-installer-web-community-8.0.16.0.msi) 20.0M
Windows (x86, 32-bit), MSI Installer 8.0.16 (mysql-installer-community-8.0.16.0.msi) 373.4M
Windows (x86, 64-bit), ZIP Archive (mysql-8.0.16-winx64.zip) 228.9M
繼續看看 MySQL 8.0.16 有哪些新特性。
賬號管理
具有 DROP ROLE 許可權的用戶只能刪除被鎖定的賬戶,而不能刪除未鎖定的賬號。
引入 System users 概念。具有 SYSTEM_USER 許可權的用戶,區別於普通用戶(沒有 SYSTEM_USER 許可權的用戶)。普通用戶只能維護普通用戶的賬號,不能維護 System users 的賬號。
之前的版本中,賦許可權的時候沒有方法排除指定的 schema 的訪問許可權,比如賦予用戶除了 mysql 之外的所有資料庫的訪問許可權。新版本中可以通過開啟參數 partial_revokes。來實現上述功能。
SET PERSIST partial_revokes = ON; GRANT SELECT, INSERT ON . TO u1; REVOKE SELECT, INSERT ON mysql.* FROM u1;
字符集
支持中文字元校驗字符集 utf8mb4_zh_0900_as_cs。
移除的功能特性
在新版本中,臨時表的存儲引擎默認使用 innodb,故 internal_tmp_disk_storage_engine 已經被移除。
功能改進和修改
explain 增加 FORMAT=TREE 的選項。幫助我們理解 sql 執行計劃的執行過程。
{EXPLAIN | DESCRIBE | DESC} tbl_name [col_name | wild] {EXPLAIN | DESCRIBE | DESC} [explain_type] {explainable_stmt | FOR CONNECTION connection_id} explain_type: { FORMAT = TRADITIONAL| JSON| TREE } explainable_stmt: { SELECT statement | DELETE statement | INSERT statement | REPLACE statement | UPDATE statement }
增加一個 api 內部調用的介面用於監控臟頁的變化
MySQL 將執行以下場景的 where 條件做對比的步驟從執行階段提前到優化階段。
1.當常量和某個欄位作比較,且常量的值大於該欄位類型的最大值,比如 a 是 tinyint ,
select * from t where a<256
會被直接轉換為
select * from t where ture;
2.和 null 作比較也被優化。如果 a 欄位是可以為 null 的, SELECT * FROM t WHERE a IS NOT NULL.
目前還不支持 between 和 and。
MGR 增加參數 group_replication_autorejoin_tries 控制節點加入集群的次數,超過指定次數則加入失敗。默認值為0,也就是說 MRG 成員不主動嘗試加入集群。 對於網路不太穩定的基礎環境,啟用該參數可以減少人肉運維操作,提高'幸福感'。
之前的版本中,MGR 成員相互傳遞大量信息可能會導致部分節點接收失敗並且從集群中移除。因為接受大量消息會導致接收消息的線程被 group communication engine (XCom, a Paxos variant) 佔用很長時間,其他節點會認為該節點無法響應。8.0.16 版本通過參數 group_replication_communication_max_message_size 支持將超過指定大小消息拆分為多組消息。
編譯須知
MySQL 8.0 對編譯的工具有比較新的版本需求,比如要求
GCC 5.3 版本
在 EL6 and EL7 使用 devtoolset- 8 而非 devtoolset- 7
Boost library 最低版本是 1.69 . 0
[admin
]