MySQL 8.0.0 開發里程碑版本(DMR)發佈!

MySQL 爲何從 5.x 一下跳躍到了 8.0。事實上,MySQL 5.x 系列已經延續了很多年,從被 Oracle 收購之前就是 5.1,而收購之後一直維持在 5.x,比如 5.5,5.6,5.7 等等。

MySQL 開發團隊於 12 日宣佈 MySQL 8.0.0 開發里程碑版本(DMR)發佈!

可能有人會驚奇 MySQL 爲何從 5.x 一下跳躍到了 8.0。事實上,MySQL 5.x 系列已經延續了很多年,從被 Oracle 收購之前就是 5.1,而收購之後一直維持在 5.x,比如 5.5,5.6,5.7 等等。其實,如果按照原本的發佈節奏,可以把 5.6.x 當成 6.x,5.7.x 當成 7.x。所以,只是換了版本命名方式而已。

不過這次發佈的 MySQL 8.0.0 開發版本還是有不少亮點的。

MySQL 8.0.0 亮點

事務性數據字典,完全脫離了 MyISAM 存儲引擎

真正將數據字典放到了 InnoDB 中的一些表中,從此不再需要 FRM、TRG、PAR 文件啦!Information Schema 現在以數據字典表的一個視圖出現。原則上可以完全不需要 MyISAM 數據表類型了,所有的系統表都可以放到 InnoDB 之中。

SQL 角色

角色是一系列權限的集合。可以創建角色,給某個用戶授予和去除角色。這對於權限管理很方便。

utf8mb4 字符集將成爲默認字符集,並支持 Unicode 9

默認字符集將從latin1改爲utf8mb4,默認定序(collation)將從latin1_swedish_ci 改爲utf8mb4_800_ci_ai。

不可見索引

可以將一些索引設置爲不可見,這樣 SQL 優化器就不會用到它,但是它會繼續在後臺保持更新。當有需要時,可以隨時恢復可見。

對二進制數據可以進行位操作

不僅僅可以對BIGINT進行位操作,從 8.0 開始也支持對[VAR]BINARY/[TINY|MEDIUM|LONG]BLOB進行位操作了。

改進了對 IPv6 和 UUID 的操作

INET6_ATON()和INET6_NTOA()現在可以進行位操作了,因爲INET6_ATON()現在返回的是VARBINARY(16)數據類型(128 位)。改進了 UUID 操作,引入了三個新的函數UUID_TO_BIN(), BIN_TO_UUID()和IS_UUID()。MySQL 並沒有特殊的 IPv6 和 UUID 數據類型,而是以VARBINARY(16)數據類型保存的。

持續性的全局變量

可以用SET PERSIST來設置持久性的全局變量,即便服務器重啓也會保持下來。

性能數據庫(Performance Schema)的改進

比如對性能數據庫增加了 100 多個索引,可以檢索更快。

重構 SQL 分析器

持續不斷的逐步改進 SQL 分析器。舊的分析器由於其語法複雜性和自頂向下的分析方式從而有嚴重的限制,導致難以維護和擴展。

成本模型

InnoDB 緩衝區現在可以估算主內存緩存區中的有多少表和索引,這可以讓優化器選擇訪問方式時知道數據是否可以存儲在內存中還是必須存儲到磁盤上。

直方圖(Histograms)

通過使用直方圖,用戶或 DBA 可以對數據分佈進行統計,這可以用於查詢優化以尋找優化的查詢方案。

改進掃描性能

改進了 InnoDB 範圍查詢的性能,可提升全表查詢和範圍查詢 5-20% 的性能。

重構 BLOB

重構 BLOB 加速了片段讀取/更新操作,可以加速 JSON 數據的操作。

持久化自增值

InnoDB 會持久化保持自增序列的最大值到 redo 日誌中。這個改進還修復了一個非常老的 199 號 bug。

臨時表

取消對壓縮臨時表的支持,並存儲臨時表的元數據到內存中。

目前 8.0.0 還是開發版本,如果你希望體驗和測試最新特性,可以下載各個平臺的安裝包。不過,MySQL 軟件包是越來越大了,Linux 平臺上的二進制打包後就將近有 1 GB。如果在產品環境中使用,在 8.0 沒有進入穩定版本之前,請繼續使用 5.7 系列,當前最新的版本是 5.7.15 GA 版本——這隻有 600 M 多。

最新的源代碼放在GitHub上,感興趣的朋友可以去看看,其中有不少是中國人的貢獻。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章