首頁>技術>

MySQL 8.0.23 已於昨日釋出,目前釋出頻率穩定保持 3 個月一次。本次釋出是維護版本,除了修復一些 Bug,此版本還增添了一些新功能。

一、不可見列

列可以定義為不可見,例如:

# 建立表時,可使其不可見(ALTER TABLE 也支援)mysql> CREATE TABLE t1 (col1 INT, col2 INT INVISIBLE);mysql> INSERT INTO t1 (col1, col2) VALUES(1, 2), (3, 4);# SQL 語句透過顯式引用它來使用不可見列mysql> SELECT * FROM t1;+------+| col1 |+------+|    1 ||    3 |+------+# 如果未引用不可見的列,則該列將不會出現在結果中mysql> SELECT col1, col2 FROM t1;+------+------+| col1 | col2 |+------+------+|    1 |    2 ||    3 |    4 |+------+------+
二、查詢屬性

允許應用程式為其查詢設定每個查詢元資料。

mysql> query_attributes n1 v1 n2 v2;mysql> SELECT         mysql_query_attribute_string('n1') AS 'attr 1',         mysql_query_attribute_string('n2') AS 'attr 2',         mysql_query_attribute_string('n3') AS 'attr 3';+--------+--------+--------+| attr 1 | attr 2 | attr 3 |+--------+--------+--------+| v1     | v2     | NULL   |+--------+--------+--------+
三、安全Doublewrite 檔案頁加密

InnoDB 自動加密屬於加密表空間的 Doublewrite 檔案頁面,無需採取任何措施。使用相關表空間的加密金鑰對 Doublewrite 檔案頁進行加密。同一表空間中被寫入資料的加密頁面也會被寫入 Doublewrite 檔案。屬於未加密表空間的 Doublewrite 檔案頁面保持未加密狀態。在恢復過程中,加密的 Doublewrite 檔案頁面是未加密狀態並檢查是否損壞。

提高賬戶確定性

為了讓 TCP 連線匹配賬戶更具確定性,在匹配主機名指定的賬戶前,匹配賬戶的主機名部分將以以下順序檢查使用主機 IP 地址指定賬戶。

# 指定 IP 地址的帳戶mysql> CREATE USER 'user_name'@'127.0.0.1';mysql> CREATE USER 'user_name'@'198.51.100.44';# 使用 CIDR 表示法指定為 IP 地址的帳戶mysql> CREATE USER 'user_name'@'192.0.2.21/8';mysql> CREATE USER 'user_name'@'198.51.100.44/16';# 使用帶子網掩碼格式的指定為 IP 地址的賬戶mysql> CREATE USER 'user_name'@'192.0.2.0/255.255.255.0';mysql> CREATE USER 'user_name'@'198.51.0.0/255.255.0.0';

https://dev.mysql.com/doc/refman/8.0/en/connection-access.html

更精準的 FLUSH 許可權

授予 RELOAD 許可權的使用者可以執行各種操作。在某些情況下,為了使 DBA 避免授予 RELOAD 並使使用者許可權更接近允許的操作,已對 FLUSH 操作得更精細的特權控制,以使客戶可以執行 FLUSH OPTIMIZER_COSTS,FLUSH STATUS,FLUSH USER_RESOURCES 和 FLUSH TABLES 語句,無需 RELOAD 許可權。

四、InnoDB最佳化 TRUNCATE / DROP

當用戶對 InnoDB 表空間 TRUNCATE 或 DROP 操作:

對有龐大緩衝池(>32GB)例項上的大表刪除對具有自適應雜湊索引引用大量頁面的表空間TRUNCATE 臨時表空間

以上情況,MySQL 現在將其標記為已刪除,然後從緩衝池懶惰地釋放屬於已刪除表空間的所有頁面,或者像釋放頁面一樣重用它們。

新增表空間 AUTOEXTEND_SIZE 屬性

InnoDB 常規表 CREATE / ALTER TABLESPACE 子句和獨立表空間的 CREATE / ALTER TABLE 子句新增自動擴充套件屬性。原表空間的增長大小已在 InnoDB 內部硬編碼為 1MB [預設](page_size * 一個範圍內的頁面數)。設定後,表空間的增長大小可以由使用者決定。

# 建立或修改表時指定擴充套件空間大小mysql> CREATE TABLE t1 (c1 INT) AUTOEXTEND_SIZE = 4M;mysql> ALTER TABLE t1 AUTOEXTEND_SIZE = 4M;# 查詢該屬性值mysql> SELECT NAME, AUTOEXTEND_SIZE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES        WHERE NAME LIKE 'test/t1';+---------+-----------------+| NAME    | AUTOEXTEND_SIZE |+---------+-----------------+| test/t1 |         4194304 |+---------+-----------------+
新增 temptable_max_mmap 變數

新變數定義了 TempTable 儲存引擎在開始將內部臨時表資料儲存到 InnoDB 磁碟內部臨時表之前,被允許從記憶體對映檔案分配的最大記憶體量。temptable_max_mmap = 0 設定將禁用從記憶體對映檔案的分配。

五、複製術語替換

不推薦使用 CHANGE MASTER TO 語句,改用別名 CHANGE REPLICATION SOURCE TO。該語句的引數還具有別名,該別名用術語 SOURCE 代替術語 MASTER。例如,現在可以將 MASTER_HOST 和 MASTER_PORT 輸入為 SOURCE_HOST 和 SOURCE_PORT。START REPLICA | SLAVE 語句的引數 MASTER_LOG_POS 和 MASTER_LOG_FILE 現在具有別名 SOURCE_LOG_POS 和 SOURCE_LOG_FILE。語句的工作方式與以前相同,只是每個語句使用的術語已更改。如果使用舊版本,則會發出棄用警告。

直接從禁用 GTID 的主機複製到啟用 GTID 的從機

CHANGE REPLICATION SOURCE TO 語句新增選項:ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS = [OFF,LOCAL,<UUID>]

允許資料在非 GTID 例項和 GTID 例項之間傳輸。

在 MTS 死鎖檢測基礎結構中包含 MDL 和 ACL 鎖

將提供多執行緒的 REPLICA 所需的執行緒序列化基礎結構與 MDL 和 ACL 訪問序列化基礎結構整合在一起,該多執行緒 REPLICA 與 SOURCE 保持相同的提交順序。其動機是能夠在 REPLICA 主動處理變更流時在 REPLICA 上執行任何客戶端語句。此類語句可能會建立死鎖,必須對其進行檢測,並最終將其破壞以繼續執行。

組複製

非同步複製通道的自動連線故障轉移,將確保接收方的傳送方列表與組複製成員身份更改同步。

六、X 協議

經典的 MySQL 協議,如果 SQL 查詢使用元資料鎖定或睡眠功能,則將定期檢查與伺服器的連線以驗證其是否仍然有效。如果不是,則可以停止查詢,以便它不會繼續消耗資源。以前,X 協議不執行這些檢查,並假定連線仍然有效。現在已為 X 協議添加了檢查。

從 MySQL 8.0.23 開始,伺服器將通知所有客戶端有關它是剛剛關閉連線還是自行關閉的資訊。客戶端可以使用此資訊來決定重新連線是否有意義,然後重試。

七、其他

最佳化雜湊聯接的雜湊表的實現。目的是提高效能,使用更少的記憶體並改善記憶體控制。

用標準 C++11 替換了部分舊的 InnoDB 程式碼。加強程式碼中使用原子性的規則和語義,從而使程式碼更符合標準。

八、棄用和移除

棄用 relay_log_info_repository 和 master_info_repository 。當用戶設定或讀取 relay_log_info_repository 或 master_info_repository 變數的值時,將出現棄用警告。未來,用於儲存複製配置和元資料的唯一選項將在事務系統表中。

關鍵字:愛可生、MySQL資料庫、資料庫運維管理、開源資料庫解決方案

22
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 基於 vue3.0 桌面端朋友圈/登入驗證+60s倒計時