MySQL 9.7.0 正式發佈,這不僅僅是一個版本號的跳躍,更是自 MySQL 8.4 以來第一個重大的長期支援版本(LTS, Long Term Support)。對於開發者和維運工程師來說,LTS 版本的意義在於它提供了更長期的穩定性保證與安全性更新,適合用於生產環境,而不需要頻繁地進行大版本升級。
這次更新的核心趨勢是將原本僅限於企業版(Enterprise Edition)的高階功能下放到社群版(Community Edition),旨在回應社群對於 Oracle 投入程度的疑慮,並強化開發者與維運人員的工具集。
查詢效能的重大突破:Hypergraph Optimizer
在 MySQL 9.7 中,最值得關注的技術改進是引入了 Hypergraph Optimizer(超圖優化器)。
傳統的 MySQL 查詢優化器主要依賴左深搜尋(Left-deep search)框架,雖然經過多年改良,但在處理複雜的多表連接(Join)時仍有局限性。超圖優化器改變了這一點,它將原本被視為後續處理的選項提升為優化過程中的一等公民。
具體來說,它帶來了三個關鍵影響:第一,它支持叢集連接(Bushy Join),能更靈活地決定表與表之間的連接順序,而非死板的線性順序;第二,它能根據實際成本在巢狀迴圈連接(Nested-loop join)與雜湊連接(Hash join)之間做出更精準的選擇;第三,它將排序順序(Interesting orders)納入搜尋考量,進而提升複雜查詢的執行效率。
不過,工程實務上必須注意,優化器的邏輯變更並不代表所有查詢都會變快。部分原本在舊版中運行良好的查詢,在新優化器下可能會產生不同的執行計畫,因此在升級前必須進行完整的回歸測試。
數據靈活性與開發者體驗
為了適應現代應用對非結構化數據的需求,MySQL 9.7 強化了 JSON Duality Views(JSON 雙向視圖)的功能。
JSON Duality Views 旨在解決關聯式資料庫(強結構)與文件資料庫(靈活結構)之間的矛盾。它允許開發者以 JSON 格式讀寫數據,但底層依然儲存在標準的關聯式表格中。在 9.7 版本中,這項功能增加了對 DML(數據操作語言)的支持以及自動遞增(Auto-increment)功能,讓開發者能像操作 NoSQL 資料庫一樣方便,同時保留 SQL 的強一致性與交易特性。
此外,內建 JavaScript 支援也讓數據處理能直接在資料庫端完成,減少了數據在應用層與資料庫層之間來回傳輸的開銷。
維運可視化與高可用性增強
對於 DBA(資料庫管理員)而言,9.7 版本大幅提升了對複製(Replication)過程的監控能力。
新版本引入了流量控制監控(Flow-control monitoring),讓維運人員能清楚看到集群是否因為節點速度不一而觸發節流(Throttling)。同時,擴展了複製應用端(Replication applier)的統計數據,能更精確地觀察多執行緒複製環境下的延遲與吞吐量。
在故障轉移(Failover)機制上,MySQL 9.7 優化了主節點選舉邏輯,會優先選擇數據最完整(Most up-to-date)的合格節點,有效降低了故障切換時可能造成的数据丟失風險。
安全性與企業功能下放
安全性方面,MySQL 9.7 引入了 OpenID 認證,簡化了現代化身份驗證的整合流程。而原本屬於企業版的動態數據遮蔽(Dynamic Data Masking)功能也開始普及,這允許管理員定義遮蔽策略,在查詢時自動隱藏敏感欄位(例如將信用卡號部分遮蔽),且無需修改應用程式的程式碼。
升級風險提示
在部署 9.7 LTS 時,請務必檢查套件管理器的設定。先前曾出現過因為儲存庫更新錯誤,導致系統在執行常規更新時,意外地將 8.4 LTS 直接升級至 9.7 LTS 的情況。由於大版本升級涉及數據字典與執行計畫的變更,建議採取受控的升級流程,而非依賴自動更新。
來源:infoq.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。