MySQL 8.0.16 穩定版發布看看有哪些新特性
MySQL 8.0.16穩定版(GA)已於上個月發布,距推出8.0.15僅過去了兩個月。繼續看看MySQL 8.0.16有哪些新特性。
賬號管理
- 具有DROP ROLE 權限的用戶只能刪除被鎖定的賬戶,而不能刪除未鎖定的賬號。
- 引入 System users 概念。具有SYSTEM_USER權限的用戶,區別於普通用戶(沒有SYSTEM_USER權限的用戶)。普通用戶只能維護普通用戶的賬號,不能維護System users 的賬號。
- 之前的版本中,賦權限的時候沒有方法排除指定的schema的訪問權限,比如賦予用戶除了mysql之外的所有數據庫的訪問權限。新版本中可以通過開啟參數partial_revokes。來實現上述功能。SET PERSIST partial_revokes = ON;GRANTSELECT, INSERTON . TO u1;REVOKESELECT, INSERTON 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 | FORCONNECTION connection_id} explain_type: { FORMAT = TRADITIONAL| JSON| TREE } explainable_stmt: { SELECTstatement | DELETEstatement | INSERTstatement | REPLACEstatement | UPDATEstatement }
增加一個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
下載地址
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