首頁>技術>

MySQL Server 8.0.18、5.7.28 和 5.6.46 已於昨日正式釋出。MySQL 開發團隊也第一時間釋出了更新說明文章。以下是原文翻譯。

原文:《The MySQL 8.0.18 Maintenance Release is Generally Available》

https://mysqlserverteam.com/the-mysql-8-0-18-maintenance-release-is-generally-available/

翻譯:管長龍

MySQL 開發團隊非常高興地宣佈,MySQL 8.0.18 現在可以從 dev.mysql.com 下載了。除了 bug 修復,此版本中還添加了一些新功能。請從 dev.mysql.com 或 Yum、APT、SUSE 庫等途徑下載 8.0.18。原始碼在GitHub上。您可以在 8.0.18 發行說明中找到更改和 bug 修復的完整列表。以下是重點!

SQL(語句)

Hash Join (WL#2241) 此功能由 Erik Froseth 實現,為在 MySQL 中執行內部等價聯接的一種方式。

例如:SELECT*FROM t1 JOIN t2 ON t1.col1=t2.col1;

可以在 8.0.18 中作為 Hash Join 執行。Hash Join 不需要任何索引來執行,並且在大多數情況下比當前的塊巢狀迴圈演算法更有效。

EXPLAIN ANALYZE (WL#4168) 此功能由 Steinar H. Gunderson實現。EXPLAIN ANALYZE 將執行查詢,然後生成 EXPLAIN 輸出,以及有關優化程式估計如何與實際執行相匹配的其他資訊。EXPLAIN ANALYZE 在新的迭代器執行程式的基礎上構建,並在實際迭代器的頂部實現定時迭代器,從而提供有關每次呼叫的精確資訊。對於每個迭代器,我們提供估計的執行成本,估計的返回行數,返回第一行的時間,返回所有行的時間(即實際成本),此迭代器返回的行數以及迴圈次數。整個查詢執行以樹形結構表示,其中節點是迭代器。

Iterator UNION (WL#13000) 此功能由 Steinar H. Gunderson 實現。UNION,UNION ALL,WITH RECURSIVE 和不合格 SELECT COUNT(*) 會在新的迭代框架執行。

將型別轉換節點注入到專案樹中,以避免資料型別不匹配 (WL# 12108) 此功能由 Catalin Besleaga 實現。將表示式和條件內的隱式型別轉換操作新增到專案樹中,判斷這些表示式和條件在提供的引數的資料型別與預期資料之間是否存在不匹配型別。此方法對使用者沒有可見的影響。

GIS(地理資訊系統)

任何幾何型別值之間的橢球模型 ST_Distance (WL#12216) 此功能由 Torje Digernes 實現。對地理幾何的距離測量,從單點到多個點的支援 (WL#9347) 擴充套件到單點,線,多邊形,多個點,多個線,多個多邊形的幾乎所有幾何組合的集合 (WL#12216)。

Only OpenSSL(SSL型別庫)

從 MySQL 程式碼庫中刪除對 wolfSSL 和 yaSSL 的支援 (WL#13290 和 WL#13289) 此功能由 Kristofer Älvring 實現。展望未來,MySQL 將僅使用 OpenSSL 作為其 SSL / TLS 庫。

Password(加密)

建立使用者可用隨機密碼 (WL#11772) 此功能由 KristoferÄlvring 實現。CREATE USER / ALTER USER / SET PASSWORD 語句新增語法,以生成強隨機密碼,並將其作為結果集行返回給客戶端。此功能使使用者更容易建立強密碼。新增的語法是:

CREATE USER user IDENTIFIED BY RANDOM PASSWORD;ALTER USER user IDENTIFIED BY RANDOM PASSWORD;SET PASSWORD [FOR user] TO RANDOM;
Compression(壓縮)

壓縮協議可在配置中指定 (WL#12475 和 WL#12039) 此功能由 Bharathy Satish 和 Thayumanavar X 撰寫。Sachithanantha 擴充套件了MySQL 協議,以處理更多的客戶端-伺服器壓縮選項,而不僅僅是 zlib。客戶端和伺服器之間的初始握手連線將基於新的功能標誌選擇兩者都支援的最佳壓縮方法。壓縮方法將由客戶端和伺服器選項的交集定義。兩者都可以是 zlib,zstd 和 uncompressed 的任何組合。壓縮的優先順序為 zlib,zstd,uncompressed。

即,如果伺服器具有“uncompressed ,zstd”,而客戶端具有“ zlib,zstd,uncompressed”,則將使用 zstd 協議。也可以指定 zstd 的壓縮級別。此功能基於 Facebook 的貢獻,請參見 bug#88567。

Replication(複製)

具有受限特權的複製 (WL#12966) Pedro Figueiredo,Abhinav Agarwal 和 Neha Kumari 在複製通道上實現了特權檢查。其動機是實現從不受信任的源到受信任的目標之間的安全複製,即建立從安全邊界的“外部”到“內部”的複製流。

Group Replication

(組複製)

將 OFFLINE_MODE 新增到 group_replication_exit_state_action (WL#12895) 此功能由 Nuno Carvalho 實現。該 group_replication_exit_state_action 選項用於指定當伺服器無意離開組時組複製的行為。新 OFFLINE_MODE 行為將關閉所有連線,並禁止不具有 CONNECTION_ADMIN 或 SUPER 特權的使用者建立新連線,否則它的行為類似於現有 READ_ONLY 模式。

TLS 1.3支援 (WL#12990) 由 Tiago Jorge 和 Tiago Vale 在 GCS / XCom 層中實現了 TLS 1.3 支援。這樣就可以在組複製中的所有組成員之間使用 TLS 1.3 來確保通訊的安全。

傳遞訊息服務 (WL#12896) 由 Anibal Pinto 實現。MySQL 模組可以使用該服務通過組複製的現有組通訊連線,將帶有標識標籤的通用訊息傳輸給所有組成員。此方法對使用者沒有可見的影響。

Router(路由)

前置的 MySQL 路由金鑰環 (WL#12974) 由 Jan Kneschke 實現。它允許 Router 管理使用者列出儲存在金鑰環中的帳戶,從金鑰環中刪除帳戶,更改金鑰環中帳戶的密碼以及更改金鑰。主金鑰環中的檔名位置。

在路由日誌中新增可選的時間戳解析度 (WL#11194) 由 Thomas Nielsen 實現了路由日誌檔案亞秒級的時間戳精度。時間戳精度可以使用路由配置檔案進行配置。

MTR(測試套件)

將測試用例移動到單獨的 .test 檔案,將需要 MyISAM 中的 rpl 套件 (WL#13053) 中,由 Pooja Lamba實現。這使 MTR 測試套件可以在沒有MyISAM 引擎的情況下在伺服器上執行。

Other(其它)

InnoDB:新增新選項以在空閒時控制寫 IOPS (WL#13115) Mayank Prasad 實現了新選項 innodb_idle_flush_pct,該選項在 InnoDB 空閒時控制寫 IOPS。目的是減少寫 IO,以延長快閃記憶體的壽命。此功能基於 Facebook 的貢獻,請參見 bug#88566 。

動態連結 Protobuf(WL#13126) Tor Didriksen 改變了 Protobuf 與伺服器的連結方式。SQL 開發人員希望在 XPlugin 之外(例如在複製中)使用 Protobuf。這是不可能的,因為 Protobuf 不能與一個以上的元件進行靜態連結,因為它保持內部狀態。解決方案是動態連結它。

加大 max_prepared_stmt_count 最大值 (WL#13342) Tor Didriksen 增加了最大值 max_prepared_stmt_count 從 1048576 到 4194304。預設為 16K。

將 sys Schema 移至 mysql server中 (WL#12673) Christopher Powers 將 sys Schema 的原始碼移至主伺服器儲存庫中,並且通常將 sys Schema 實現與伺服器整合在一起。這是內部簡化,沒有外部影響。

錯誤訊息引數的編譯時檢查 (WL#13110) Jens EvenBlomsøy 實現了CMake 配置選項,可在編譯時檢查錯誤訊息引數的數量和型別。預設情況下,選項 -DCHECK_ERRMSG_FORMAT 為 OFF。其動機是使開發人員能夠在編譯時檢測錯誤,而不是在執行時獲取意外錯誤。

Deprecation and Removal

(棄用和移除)

MySQL 8.0.18 不會刪除任何功能,但會將某些功能標記為 8.0 中已棄用。不推薦使用的功能將在將來的主要版本中刪除。

在libmysql中棄用 MYSQL_PWD 環境變數的使用(WL#13449) Georgi Kodinov 實現,即如果沒有提供密碼,libmysql 將從 OS 環境變數 MYSQL_PWD 中讀取密碼。不鼓勵使用此功能,因為環境變數可以由本地使用者檢查。要求使用者使用其他更安全的機制來儲存密碼。

棄用 --relay-log-info-file 和 --master-info-file (WL#11031)LuísSoares 解決了這兩個選項缺少棄用警告的事實。這些應該已經分別與其“父”選項 relay_log_info_repository=FILE 和 master_info_repository=FILE 一起棄用。

棄用 slave-rows-search-algorithms (WL#12892) 選項 slave-rows-search-algorithms 選項控制複製應用程式在應用 UPDATE 或 DELETE 行事件時如何查詢表中的行。從 8.0 開始,此選項的預設值為 HASH_SCAN 和 INDEX_SCAN,這對於效能和正確性而言始終是最佳的。因此,最好不要使用替代演算法。

棄用 log_bin_use_v1_row_events (WL#12926) 當用戶設定或讀取log_bin_use_v1_row_events的值時棄用警告。當前預設值為 V2 行事件。V2 是 MySQL 5.6 中引入的,從那時起,MySQL 可以解析和解釋 v1 和 v2 行事件。

棄用 WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS函式(WL#13178)當用戶使用 WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS函式時,實現了棄用警告。該警告指出,使用者應使用 WAIT_FOR_EXECUTED_GTID_SET 而不是 WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS。前者取代後者。

感謝您使用 MySQL!

  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 嵌入式Linux開發之Ubuntu系統初體驗