2026 年 5 月,Oracle 正式釋出 MySQL 9.7.0 LTS。對絕大多數還在用 8.0 系列、或是觀望了一整年才敢碰 9.x Innovation Release 的團隊來說,這是自 2024 年 8.4 之後第一個「值得真的去升級」的版本——也是繼 8.0 之後,MySQL 第一次把過去只屬於 Enterprise Edition 的能力,整批搬進 Community Edition。
如果只看一行重點:MySQL 9.7 LTS 把過去十年大家在等的 Hypergraph Optimizer 正式開放給社群版,等於整個 Open Source 世界突然多了一個能跟 PostgreSQL 在複雜 JOIN 場景正面對決的優化器。對 Laravel、Yii、Symfony 這類重度依賴 Eloquent/ORM 多表關聯的後端來說,這是這一季最值得排進 sprint 的事。
一、Hypergraph Optimizer:終於不用怕「七張表 JOIN」
傳統 MySQL 的 optimizer 在做 JOIN 時,是用「貪婪式」搜索一個近似最佳的計畫。一旦 SQL 涉及五張表以上的多重關聯、或是 GROUP BY/ORDER BY 跟 JOIN 順序有交互作用,計畫品質就會嚴重退步——這也是過去十年大家忍不住把熱資料丟去 PostgreSQL 或 Elasticsearch 的最大原因。
Hypergraph Optimizer 改用 dynamic programming,把整個查詢視為一張圖,列舉所有可連通的子計畫,再依照成本選擇真正的最佳路徑。Oracle 官方部落格的數據顯示,在多表 JOIN 與多種 JOIN 演算法競爭的工作負載下,新計畫器產出的執行計畫品質與 PostgreSQL 等價,部分情境甚至更快。
使用方式很簡單——在 session 層級下達 SET optimizer_switch='hypergraph_optimizer=on',就能讓特定報表型查詢吃到新計畫器,不會影響其他線上交易。建議先用 EXPLAIN FORMAT=tree 比對前後計畫,再決定要不要在 my.cnf 全域開啟。
二、Dynamic Data Masking 終於可以「不改 App」就上線
9.7 LTS 把 Dynamic Data Masking(DDM)正式 GA。這個功能對所有需要符合個資法、PCI-DSS、HIPAA 或 ISO 27001 的台灣外包與接案團隊都非常重要——它讓你可以在「base table 的欄位層級」掛遮罩政策,由 MySQL 在 query time 根據執行者的角色決定要回傳原值還是遮罩後的值,App 端完全不用改。
實際情境:你的後台讓客服看訂單,但客服不該看到完整信用卡末四碼或身分證字號。過去要嘛在 SQL view 裡用 CONCAT('***', RIGHT(...)),要嘛在 Laravel Accessor 裡做遮罩——前者管不住直接連 DB 的人,後者管不住其他語言寫的微服務。9.7 之後,遮罩規則直接綁在欄位上,誰連、用什麼工具連,都受同一份政策約束。
三、Telemetry Component:MySQL 終於原生講 OpenTelemetry
9.7 新增的 Telemetry Component 可以把 metrics 與 traces 直接吐給 Prometheus、OpenTelemetry Collector 等可觀測性工具。過去要做 MySQL 監控,得另外裝 mysqld_exporter、Percona PMM、或自建 sidecar;現在從資料庫核心就能讓 SRE 直接看到 query trace 與 replication lag,整套監控的維運成本直接砍掉一截。
四、Replication 可觀測性大升級
9.7 對多執行緒複製(Multi-threaded Replication)的「lag、throughput、queued work、worker 行為」全面開放可觀測。對任何用 MySQL 做讀寫分離、或是用 GTID 跨機房同步的 Laravel 專案來說,過去最大的痛點——「我也不知道 slave 為什麼又落後了三分鐘」——終於有了可觀測的訊號。
五、PHP / Laravel 團隊這一季的升級節奏
建議的安全升級路徑:先在 staging 環境跑 mysql-shell util.checkForServerUpgrade(),確認沒有相容性警告;再做完整的 mysqldump + 異地備份;接著一鍵 in-place upgrade 到 9.7 LTS。對 Laravel 來說,9.7 與 8.0 在 SQL 層面相容性極高,Eloquent 的查詢幾乎不用改,但建議把 config/database.php 裡的 strict 模式打開後重跑一次測試,因為 9.x 對 sql_mode 比 8.0 更嚴。
六、什麼時候不要升 9.7?
如果你的系統還重度依賴 MySQL 8.0 的 X Protocol 部分舊功能(已在 9.x 系列中棄用),或是還沒升級到 Laravel 11+/PHP 8.3+,就先別動 production。LTS 的好處是它會撐到 2028 年——你有時間先把 PHP/Laravel 端升好再來。
我的觀點
過去十年,MySQL 在「複雜分析查詢」一直被 PostgreSQL 壓著打,導致很多團隊的解法是「OLTP 用 MySQL、複雜報表搬去 PG」,整個技術棧就此分裂。9.7 LTS 等於 Oracle 正式回頭打這場仗:Hypergraph Optimizer 補上分析查詢的痛點、Vector Data Type(9.0 引入)補上 AI/RAG 場景、DDM 補上合規場景、Telemetry 補上可觀測性。對台灣中小企業外包接案來說,這個版本最大的意義是——你不再需要為了一張像樣的 dashboard 就被迫多養一台 PostgreSQL。一台 MySQL 9.7 LTS,加上 Laravel + Nginx,2026 年的中型 SaaS 技術棧又重新變得簡單。
資料來源
- 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
- Introducing Dynamic Data Masking in MySQL — Oracle MySQL Blog
- MySQL 9.7 Is Out and the Community Wins — Oracle MySQL Blog