版本號跳躍說明
MySQL 從 5.7 直接跳至 8.0,非功能性大躍進,而是版本號規則調整:5.6 ≈ 6.x、5.7 ≈ 7.x,8.0 為下一主版本。
八大核心亮點
1. 事務性資料字典
- 完全脫離 MyISAM,字典表存於 InnoDB。
- 不再需要 .frm/.trg/.par 檔案。
- Information Schema 成為字典視圖,系統表全面 InnoDB 化。
2. SQL 角色
- 權限集合化管理:
CREATE ROLE、GRANT ROLE TO user、SET DEFAULT ROLE。
- 大幅簡化複雜權限體系維護。
3. utf8mb4 成預設字符集
- 預設字符集:
latin1 → utf8mb4
- 預設校對規則:
latin1_swedish_ci → utf8mb4_800_ci_ai
- 支援 Unicode 9.0,完整相容 Emoji。
4. 不可見索引
ALTER TABLE t ALTER INDEX idx INVISIBLE/VISIBLE
- 優化器忽略不可見索引,但索引維護持續進行。
- 適合驗證索引必要性、平滑下線索引。
5. 二進制資料位運算
- 擴展位運算至
VARBINARY、BLOB 類型。
- 不再限於
BIGINT。
6. IPv6 與 UUID 操作增強
INET6_ATON() 回傳 VARBINARY(16),支援位運算。
- 新增
UUID_TO_BIN()、BIN_TO_UUID()、IS_UUID()。
- UUID 儲存效率提升 50%(36 字元 → 16 位元組)。
7. 持久化全域變數
SET PERSIST var = value 重啟後依然生效。
- 儲存於
mysqld-auto.cnf,避免手動修改配置檔。
8. 效能 Schema 大幅優化
其他重要改進
- SQL 解析器重構:自頂向下 → 更易維護擴展。
- 成本模型優化:InnoDB Buffer Pool 熱度估算,優化器感知記憶體命中率。
- 直方圖統計:
ANALYZE TABLE ... UPDATE HISTOGRAM,優化器掌握資料分布。
- 掃描效能提升 5-20%:範圍/全表掃描優化。
- BLOB 重構:片段讀寫加速,JSON 操作受益。
- 自增值持久化:Redo log 記錄最大值,修復 199 號老 Bug。
- 臨時表優化:移除壓縮支援,元資料記憶體化。
下載與建議
- 開發測試:dev.mysql.com 下載 DMR 版(Linux 二進制 ~1 GB)。
- 生產環境:持續使用 5.7 系列(當前 5.7.15 GA,~600 MB)。
- 原始碼:GitHub,含多位中國開發者貢獻。
