2025 年 1 月 21 日,MySQL 推出了其最新版本 9.2.0,作為一個創新版本(Innovation Release),此版本在多個方面進行了改進,包括帳戶管理、API 優化、字符集支援、編譯環境更新、SQL 語法變更,以及性能提升等,為開發者與企業使用者提供了更強大、更靈活的資料庫解決方案。
帳戶管理與安全機制的提升
在帳戶管理方面,MySQL 9.2.0 增加了 CREATE_SPATIAL_REFERENCE_SYSTEM 權限,允許使用者執行與空間參考系統相關的操作,如創建與刪除空間參考系統,並逐步淘汰對 SUPER 權限的依賴。此外,密碼驗證機制的錯誤處理得到了修正,確保了帳戶安全性更加可靠。在刪除使用者(DROP USER)後,資料庫快取未正確刷新的問題也在此版本中被解決,進一步提升了操作一致性。
C API 的內存管理優化
MySQL 9.2.0 在 C API 中對內存管理進行了重大改進。當使用者重複使用準備語句(Prepared Statements)時,過去未正確釋放內存可能導致內存過度使用。此次更新引入了一個獨立的 MEM_ROOT 對象,專門用於儲存綁定參數的陣列,每次操作後內存即被釋放,顯著降低了程式的內存佔用,並提高了應用程式效能。
字符集與視圖查詢修復
此次版本解決了因字符集不一致而導致視圖查詢結果錯誤的問題,特別是涉及非 ASCII 字符的情境。MySQL 現在能正確處理字符集之間的轉換,確保查詢結果的準確性。
編譯與平臺支援的擴展
對於開發者而言,MySQL 9.2.0 在編譯與平臺支援方面進行了多項改進:
- macOS 支援:增加對 Homebrew Clang 編譯器的支援,並解決多項編譯警告與代碼冗餘問題。
- Windows 平台:優化了 MySQL 在 Visual Studio 2022 上的編譯流程,並加入新的指令選項來減少潛在錯誤。
- Linux 平台:修復了在 Ubuntu 22.04 上使用 Clang 13 編譯失敗的問題,同時提升了對 Fedora 40 等新發行版的兼容性。
配置與安裝變更
在配置方面,MySQL Configurator 不再執行已被淘汰的 FLUSH PRIVILEGES 指令,這反映了 MySQL 對未來簡化指令集與提升安全性的方向規劃。此外,升級過程中系統自動帳戶的身份驗證方式已改為 caching_sha2_password 插件,進一步適配 MySQL 8.0 和 9.0 的安全標準。
SQL 語法的調整與優化
MySQL 9.2.0 引入了多項 SQL 語法的變更,並針對語法兼容性進行了全面檢討。例如,BINLOG 關鍵字現已成為保留字,未來需用引號包裹以避免語法錯誤。此外,針對子查詢中含聚合函數的條件推送問題也進行了修正,保證了查詢的正確性與效率。
性能與效能監控的提升
此次版本的性能優化涵蓋多個方面:
- InnoDB 優化:通過提升異步 I/O 處理性能與頁面清理進程的管理效率,顯著加速高負載環境中的操作速度。
- Performance Schema:增強了對系統執行緒的過濾與鎖定類型變更的追蹤能力,讓開發者能更細緻地監控數據庫的運行情況。
插件與擴展功能的改進
MySQL 9.2.0 在插件方面也有所突破。除了改進可插拔的身份驗證功能,此版本還新增了對 JavaScript 程式的支援,允許開發者透過 JavaScript 語法操作 MySQL 資料庫。這項功能包括對儲存函數、過程、交易以及內建函數的直接訪問,使得多語言支援的能力更上層樓。
錯誤修復與穩定性提升
此次版本修復了大量錯誤,例如:
- 視圖與索引問題:解決了更新幾何空間索引後可能出現的資料損毀情況。
- 性能與查詢結果:針對哈希連接的內存分配與重複建構問題進行了修復,提升了複雜查詢的穩定性。
總結來說,MySQL 9.2.0 版本在功能性、效能和穩定性方面都實現了重大進步,為開發者與企業帶來了一個更加強大、高效能的資料庫選擇。這些變更與改進不僅強化了現有功能,也為未來的技術創新奠定了基礎,展示了 MySQL 作為全球領先開源資料庫的卓越實力。
參考資料:
https://dev.mysql.com/doc/relnotes/mysql/9.2/en/news-9-2-0.html