MySQL 納入 Oracle 產品線後研發投入大增,5.5 版本帶來架構級升級。本文從儲存引擎、多核擴展、複制可靠性、分區功能、InnoDB 內核優化五大維度,系統梳理 5.5 的關鍵特性。
1. 預設儲存引擎轉為 InnoDB + Plugin 1.0.7
- 5.1 前預設 MyISAM,5.5 正式轉向成熟事務引擎 InnoDB。
- 引入 InnoDB Plugin 1.0.7:崩潰恢復時間從小時級縮減至分鐘級(採用紅黑樹優化)。
- 支援資料壓縮儲存,節省空間並提升記憶體命中率。
- Autoadaptive Flush Checkpoint 避免效能突發抖動。
- Multi Rollback Segments:從單段擴充至 128 段,解決 1023 並發上限,大幅提升高併發吞吐。
2. 多核擴展性突破:Metadata Locking (MDL) 取代 LOCK_open mutex
舊版單一全域互斥鎖在多核心下嚴重爭用。MDL 框架將鎖粒度細化至元資料物件,官方宣稱目標為「效能不受處理器數量限制」,後續版本持續優化鎖競爭。
3. 複制功能重大增強
- 半同步複制:主庫提交前至少一從庫確認收到 Relay Log,大幅降低極端情況下資料遺失風險。
- Slave fsync 調優、Relay Log 損壞自動恢復、Replication Heartbeat 監測連線存活。
4. 表分區功能大幅易用化
| 增強項目 | 5.1 痛點 | 5.5 解決方案 |
| 非整數列分區 | 僅支援整數,日期/字串需函數轉換 | 新增 RANGE/LIST COLUMNS 分區,直接支援 DATE、DATETIME、字串類型 |
| 多欄分區 | 單欄限制 | COLUMNS 關鍵字允許多欄組合定義分區 |
| 清空分區資料 | DELETE 慢、DROP+REORGANIZE 成本高 | 引入 TRUNCATE PARTITION 瞬間清空並保留分區結構 |
| 秒級分區 | 最小間隔 1 天 | 新增 TO_SECONDS() 函數,支援亞日級分區 |
5. InnoDB 內核級優化
- Insert Buffering:非聚簇索引插入未命中 Buffer Pool 時延遲合併,減少隨機 I/O。
- Delete & Purge Buffering:同理優化刪除與清理操作。
- Linux 原生 AIO 支援:繞過用戶態模擬,直接使用 Kernel AIO,提升磁碟並發能力。
升級建議
5.5 為長期支援版(LTS),若仍在 5.1/5.0 建議規劃升級。升級前務必:完整備份、測試應用相容性、評估 InnoDB 預設值對現有 MyISAM 表的影響、調整 innodb_buffer_pool_size 等核心參數。
- 上一篇文章: MySQL 存取權限體系完整解析:用戶認證、權限層級與安全強化
- 下一篇文章: MySQL 進階冷門技巧:XML 輸出、索引重建、表壓縮、CSV 匯出與 Strict 模式
Copyright ©
程式碼之家 All Rights Reserved