這個月對 MySQL 工程師來說有個被低估的大新聞:4 月 21 日 Oracle 正式釋出 MySQL 9.7.0 LTS,這是繼 8.4 之後第一個主要的長期支援版本,也是把過去十年「企業版限定」清單一次大量倒進社群版的一次釋出。對所有用 MySQL 跑 Laravel、WordPress、自家管理系統的團隊來說,今年下半年的資料庫升級路線圖必須重畫。
一、真正的頭條:Hypergraph 優化器進入社群版
傳統的 MySQL 優化器把查詢視為「資料表的串聯」,但 Hypergraph 把整個查詢視為一張超圖,用動態規劃枚舉所有「連通子計畫」。實務上的差別非常具體:interesting orders 正式進入搜尋空間、nested loop 與 hash join 變成有成本依據的選擇、bushy join plan 也能被產生。對於跑大量報表或多表 JOIN 頁的 Laravel 系統,這意味著同樣的 SQL 在不重寫的情況下可能變快 2 到 5 倍。
要注意:9.7 預設仍未啟用 Hypergraph,需要用 SET optimizer_switch 開啟並做 A/B。
二、In-Database JavaScript Stored Programs
你可以直接在 MySQL 中用 JS 寫 stored routine,搭配 9.3 起就支援的 JSON duality、本次新增的 DECIMAL/NUMERIC 完整支援,以及 prepared statement bind() 參數打通能力。對 Laravel 工程師意味著:那些一直被「PHP 算還是 DB 算」這條線困擾的金額計算、欄位驗證、複雜 JSON 轉換,現在可以真正下放到資料層。
三、資安與 8.0 EOL
9.7 把 dynamic data masking 從企業版搬到社群版,加上原生 OpenID 認證。同時 MySQL 8.0.46 是 8.0 的最後一版——8.0 正式 EOL。如果你還在 8.0,今年內必須有遷移計畫。
我的觀點
MySQL 9.7 LTS 真正的意義不是任何單一功能,而是「企業版」與「社群版」的差距被有意識地縮小。這對於外包接案者、初創 SaaS、以及不想被 MySQL Enterprise 鎖死的中型企業,是這十年最有利的一次釋出。請今年內安排一次 9.7 PoC,特別是先針對 JOIN 最痛的報表頁開 Hypergraph 跑一輪比對。
資料來源
- MySQL 9.7: First Major LTS Since 8.4 Brings Enterprise Features to Community Edition — InfoQ
- MySQL 9.7.0 LTS Is Now Available — Oracle MySQL Blog
- The Hypergraph Optimizer Is Now Available in MySQL 9.7 Community Edition — Oracle MySQL Blog
- What's New in MySQL 9 — A DBA's Perspective — Bytebase