MySQL 8.0 正式版 8.0.11 已釋出,官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,還帶來了大量的改進和更快的性能!
注意:從 MySQL 5.7 更新到 MySQL 8.0 僅支援通過使用 in-place 方式進行更新,并且不支援從 MySQL 8.0 降級到 MySQL 5.7(或從某個 MySQL 8.0 版本降級到任意一個更早的 MySQL 8.0 版本)。唯一受支援的替代方案是在更新之前對資料進行備份。
下面簡要介紹 MySQL 8 中值得關注的新特性和改進。
1. 性能:MySQL 8.0 的速度要比 MySQL 5.7 快 2 倍。MySQL 8.0 在以下方面帶來了更好的性能:讀/寫工作負載、IO 密集型工作負載、以及高競争("hot spot"熱點競争問題)工作負載。
2. NoSQL:MySQL 從 5.7 版本開始提供 NoSQL 存儲功能,目前在 8.0 版本中這部分功能也得到了更大的改進。該項功能消除了對獨立的 NoSQL 文檔資料庫的需求,而 MySQL 文檔存儲也為 schema-less 模式的 JSON 文檔提供了多文檔事務支援和完整的 ACID 合規性。
3. 視窗函數(Window Functions):從 MySQL 8.0 開始,新增了一個叫視窗函數的概念,它可以用來實作若幹新的查詢方式。視窗函數與 SUM()、COUNT() 這種集合函數類似,但它不會将多行查詢結果合并為一行,而是将結果放回多行當中。即視窗函數不需要 GROUP BY。
4. 隐藏索引:在 MySQL 8.0 中,索引可以被“隐藏”和“顯示”。當對索引進行隐藏時,它不會被查詢優化器所使用。我們可以使用這個特性用于性能調試,例如我們先隐藏一個索引,然後觀察其對資料庫的影響。如果資料庫性能有所下降,說明這個索引是有用的,然後将其“恢複顯示”即可;如果資料庫性能看不出變化,說明這個索引是多餘的,可以考慮删掉。
5. 降序索引:MySQL 8.0 為索引提供按降序方式進行排序的支援,在這種索引中的值也會按降序的方式進行排序。
6. 通用表表達式(Common Table Expressions CTE):在複雜的查詢中使用嵌入式表時,使用 CTE 使得查詢語句更清晰。
7. UTF-8 編碼:從 MySQL 8 開始,使用 utf8mb4 作為 MySQL 的預設字元集。
8. JSON:MySQL 8 大幅改進了對 JSON 的支援,添加了基于路徑查詢參數從 JSON 字段中抽取資料的 JSON_EXTRACT() 函數,以及用于将資料分别組合到 JSON 數組和對象中的 JSON_ARRAYAGG() 和 JSON_OBJECTAGG() 聚合函數。
9. 可靠性:InnoDB 現在支援表 DDL 的原子性,也就是 InnoDB 表上的 DDL 也可以實作事務完整性,要麼失敗復原,要麼成功送出,不至于出現 DDL 時部分成功的問題,此外還支援 crash-safe 特性,中繼資料存儲在單個事務資料字典中。
10. 高可用性(High Availability):InnoDB 叢集為您的資料庫提供內建的原生 HA 解決方案。
11. 安全性:對 OpenSSL 的改進、新的預設身份驗證、SQL 角色、密碼強度、授權。
Windows (x86, 64-bit), ZIP Archive(mysql-8.0.11-winx64.zip) 183.3M
https://dev.mysql.com/downloads/file/?id=476233
Windows (x86, 64-bit), ZIP Archive(mysql-8.0.11-winx64-debug-test.zip) 230.5M
Debug Binaries & Test Suite
https://dev.mysql.com/downloads/file/?id=476234