MySQL 9.0.0 更新釋出
2024年7月1日,MySQL 宣布推出最新的創新版本 MySQL 9.0.0。此次更新包括多項新功能、性能改進及若干棄用項目,旨在提升資料庫的效能及用戶體驗。以下是本次更新的重點內容:
主要更新項目
審計日誌改進
MySQL 現在無論插件類型如何,都會使用有效的插件結構作為參數調用 plugin->deinit()
。
C API 修正
解決了C API 應用程序在接收伺服器端準備語句的結果時出現的停滯問題。
字符集支援改進
- 修復了在使用
REPLACE()
函數時,確保第三個參數也轉換為第一個參數的字符集和排序規則。
- 修正了內部函數
my_instr_mb()
在多字節字符集和排序規則下的錯誤假設。
- 修復了內部函數
Item_func::eq()
錯誤地將兩個不同字符集的轉換結果視為相等的問題。
編譯改進
- macOS 平台不再使用原生的
ctags
,而是需要安裝 Homebrew 版本。
- 啟用了 gRPC 支援。
- 更新了捆綁的 googletest 和 googlemock 源碼至 1.14.0。
- 提升了 Boost 庫版本至 1.85.0。
- 企業 Linux 8 和 9 的二進制文件現在使用 GCC 13 進行構建。
組件改進
解決了使用 --loose
前綴設置的組件選項未被讀取的問題。
配置改進
- Windows 平台上的 MySQL Configurator 更新以支援就地升級。
- 增加了確認彈出框來處理正在執行操作時的關閉請求。
- 移除了自定義的
server_type
變量,相關訊息現在儲存在 configurator_settings.xml
文件中。
數據字典改進
修復了從 MySQL 5.7 升級到 8.0 或更高版本時,包含普通列和生成列的 MyISAM 表損壞的問題。
數據類型改進
- 修正了在將字符串轉換為數值時,未能正確處理非數值數據導致的錯誤。
- 現在將雙精度浮點數轉換為整數時統一使用四捨五入。
棄用和移除項目
mysql_native_password
認證插件已移除,伺服器現在拒絕來自不支援 CLIENT_PLUGIN_AUTH
的舊客戶端程序的認證請求。
- Performance Schema 表
variables_info
中的 MIN_VALUE
和 MAX_VALUE
列已棄用,建議改用 variables_metadata
表中的同名列。
性能優化
優化器改進
ER_SUBQUERY_NO_1_ROW
錯誤已從忽略列表中移除,以防止潛在的數據插入錯誤。
- 新增了兩個 Performance Schema 表
variables_metadata
和 global_variable_attributes
來提供系統變量的詳細資訊。
InnoDB 改進
- 優化了 InnoDB 恢復邏輯以減少恢復操作之間的暫停時間。
- 增強了文件系統操作的一致性。
SQL 語法改進
JSON 支援
- 現在可以將
EXPLAIN ANALYZE
的 JSON 輸出儲存到用戶變量中,並用於後續的 JSON 函數操作。
- 改進了
innodb_lock_waits
視圖的性能。
X 插件改進
解決了使用 X 協議時無法設置 caching_sha2_password_digest_rounds
的問題。
修復的錯誤
本次更新還修復了多個錯誤,包括但不限於:
- 解決了在更新後出現的意外終止問題。
- 修復了各類平台上的編譯警告。
- 修復了多個影響 InnoDB、Replication 和 JSON 功能的錯誤。
此次 MySQL 9.0.0 的更新包含了大量的改進和優化,旨在為用戶提供更高效、更可靠的資料庫解決方案。詳細的更新說明和修復列表請參考官方文檔。
參考資料:https://dev.mysql.com/doc/relnotes/mysql/9.0/en/news-9-0-0.html