MySQL 9.0.0 更新釋出

2024年7月1日,MySQL 宣布推出最新的創新版本 MySQL 9.0.0。此次更新包括多項新功能、性能改進及若干棄用項目,旨在提升資料庫的效能及用戶體驗。以下是本次更新的重點內容:

主要更新項目

審計日誌改進
MySQL 現在無論插件類型如何,都會使用有效的插件結構作為參數調用 plugin->deinit()

C API 修正
解決了C API 應用程序在接收伺服器端準備語句的結果時出現的停滯問題。

字符集支援改進

  1. 修復了在使用 REPLACE() 函數時,確保第三個參數也轉換為第一個參數的字符集和排序規則。
  2. 修正了內部函數 my_instr_mb() 在多字節字符集和排序規則下的錯誤假設。
  3. 修復了內部函數 Item_func::eq() 錯誤地將兩個不同字符集的轉換結果視為相等的問題。

編譯改進

  1. macOS 平台不再使用原生的 ctags,而是需要安裝 Homebrew 版本。
  2. 啟用了 gRPC 支援。
  3. 更新了捆綁的 googletest 和 googlemock 源碼至 1.14.0。
  4. 提升了 Boost 庫版本至 1.85.0。
  5. 企業 Linux 8 和 9 的二進制文件現在使用 GCC 13 進行構建。

組件改進
解決了使用 --loose 前綴設置的組件選項未被讀取的問題。

配置改進

  1. Windows 平台上的 MySQL Configurator 更新以支援就地升級。
  2. 增加了確認彈出框來處理正在執行操作時的關閉請求。
  3. 移除了自定義的 server_type 變量,相關訊息現在儲存在 configurator_settings.xml 文件中。

數據字典改進
修復了從 MySQL 5.7 升級到 8.0 或更高版本時,包含普通列和生成列的 MyISAM 表損壞的問題。

數據類型改進

  1. 修正了在將字符串轉換為數值時,未能正確處理非數值數據導致的錯誤。
  2. 現在將雙精度浮點數轉換為整數時統一使用四捨五入。

棄用和移除項目

  1. mysql_native_password 認證插件已移除,伺服器現在拒絕來自不支援 CLIENT_PLUGIN_AUTH 的舊客戶端程序的認證請求。
  2. Performance Schema 表 variables_info 中的 MIN_VALUEMAX_VALUE 列已棄用,建議改用 variables_metadata 表中的同名列。

性能優化

優化器改進

  1. ER_SUBQUERY_NO_1_ROW 錯誤已從忽略列表中移除,以防止潛在的數據插入錯誤。
  2. 新增了兩個 Performance Schema 表 variables_metadataglobal_variable_attributes 來提供系統變量的詳細資訊。

InnoDB 改進

  1. 優化了 InnoDB 恢復邏輯以減少恢復操作之間的暫停時間。
  2. 增強了文件系統操作的一致性。

SQL 語法改進

JSON 支援

  1. 現在可以將 EXPLAIN ANALYZE 的 JSON 輸出儲存到用戶變量中,並用於後續的 JSON 函數操作。
  2. 改進了 innodb_lock_waits 視圖的性能。

X 插件改進
解決了使用 X 協議時無法設置 caching_sha2_password_digest_rounds 的問題。

修復的錯誤

本次更新還修復了多個錯誤,包括但不限於:

  1. 解決了在更新後出現的意外終止問題。
  2. 修復了各類平台上的編譯警告。
  3. 修復了多個影響 InnoDB、Replication 和 JSON 功能的錯誤。

此次 MySQL 9.0.0 的更新包含了大量的改進和優化,旨在為用戶提供更高效、更可靠的資料庫解決方案。詳細的更新說明和修復列表請參考官方文檔。

參考資料: