溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MySQL 8.0.23版本的特性有哪些

發(fā)布時(shí)間:2021-01-22 14:07:43 來源:億速云 閱讀:199 作者:Leah 欄目:開發(fā)技術(shù)

MySQL 8.0.23版本的特性有哪些?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

一、不可見列

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

# 創(chuàng)建表時(shí),可使其不可見(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 |
+------+

# 如果未引用不可見的列,則該列將不會(huì)出現(xiàn)在結(jié)果中
mysql> SELECT col1, col2 FROM t1;
+------+------+
| col1 | col2 |
+------+------+
|  1 |  2 |
|  3 |  4 |
+------+------+

https://dev.mysql.com/doc/refman/8.0/en/invisible-columns.html

二、查詢屬性

允許應(yīng)用程序?yàn)槠洳樵冊(cè)O(shè)置每個(gè)查詢?cè)獢?shù)據(jù)。

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  |
+--------+--------+--------+

https://dev.mysql.com/doc/refman/8.0/en/query-attribute-udfs.html#udf_mysql-query-attribute-string

三、安全

Doublewrite 文件頁加密

InnoDB 自動(dòng)加密屬于加密表空間的 Doublewrite 文件頁面,無需采取任何措施。使用相關(guān)表空間的加密密鑰對(duì) Doublewrite 文件頁進(jìn)行加密。同一表空間中被寫入數(shù)據(jù)的加密頁面也會(huì)被寫入 Doublewrite 文件。屬于未加密表空間的 Doublewrite 文件頁面保持未加密狀態(tài)。在恢復(fù)過程中,加密的 Doublewrite 文件頁面是未加密狀態(tài)并檢查是否損壞。

https://dev.mysql.com/doc/refman/8.0/en/innodb-data-encryption.html

提高賬戶確定性

為了讓 TCP 連接匹配賬戶更具確定性,在匹配主機(jī)名指定的賬戶前,匹配賬戶的主機(jī)名部分將以以下順序檢查使用主機(jī) 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';

# 使用帶子網(wǎng)掩碼格式的指定為 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

更精準(zhǔn)的 FLUSH 權(quán)限

授予 RELOAD 權(quán)限的用戶可以執(zhí)行各種操作。在某些情況下,為了使 DBA 避免授予 RELOAD 并使用戶權(quán)限更接近允許的操作,已對(duì) FLUSH 操作的更精細(xì)的特權(quán)控制,以使客戶可以執(zhí)行 FLUSH OPTIMIZER_COSTS,F(xiàn)LUSH STATUS,F(xiàn)LUSH USER_RESOURCES 和 FLUSH TABLES 語句,無需 RELOAD 權(quán)限。

https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_reload

四、InnoDB

優(yōu)化 TRUNCATE / DROP

當(dāng)用戶對(duì) InnoDB 表空間 TRUNCATE 或 DROP 操作:

  • 對(duì)有龐大緩沖池(>32GB)實(shí)例上的大表刪除

  • 對(duì)具有自適應(yīng)哈希索引引用大量頁面的表空間

  • TRUNCATE 臨時(shí)表空間

以上情況,MySQL 現(xiàn)在將其標(biāo)記為已刪除,然后從緩沖池懶惰地釋放屬于已刪除表空間的所有頁面,或者像釋放頁面一樣重用它們。

新增表空間 AUTOEXTEND_SIZE 屬性

InnoDB 常規(guī)表 CREATE / ALTER TABLESPACE 子句和獨(dú)立表空間的 CREATE / ALTER TABLE 子句新增自動(dòng)擴(kuò)展屬性。原表空間的增長(zhǎng)大小已在 InnoDB 內(nèi)部硬編碼為 1MB [默認(rèn)](page_size * 一個(gè)范圍內(nèi)的頁面數(shù))。設(shè)置后,表空間的增長(zhǎng)大小可以由用戶決定。

# 創(chuàng)建或修改表時(shí)指定擴(kuò)展空間大小
mysql> CREATE TABLE t1 (c1 INT) AUTOEXTEND_SIZE = 4M;
mysql> ALTER TABLE t1 AUTOEXTEND_SIZE = 4M;

# 查詢?cè)搶傩灾?
mysql> SELECT NAME, AUTOEXTEND_SIZE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES 
    WHERE NAME LIKE 'test/t1';
+---------+-----------------+
| NAME  | AUTOEXTEND_SIZE |
+---------+-----------------+
| test/t1 |     4194304 |
+---------+-----------------+

https://dev.mysql.com/doc/refman/8.0/en/innodb-tablespace-autoextend-size.html

新增 temptable_max_mmap 變量

新變量定義了 TempTable 存儲(chǔ)引擎在開始將內(nèi)部臨時(shí)表數(shù)據(jù)存儲(chǔ)到 InnoDB 磁盤內(nèi)部臨時(shí)表之前,被允許從內(nèi)存映射文件分配的最大內(nèi)存量。temptable_max_mmap = 0 設(shè)置將禁用從內(nèi)存映射文件的分配。

https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_temptable_max_mmap

五、復(fù)制

術(shù)語替換

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

直接從禁用 GTID 的主機(jī)復(fù)制到啟用 GTID 的從機(jī)

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

允許數(shù)據(jù)在非 GTID 實(shí)例和 GTID 實(shí)例之間傳輸。

https://dev.mysql.com/doc/refman/8.0/en/replication-gtids-assign-anon.html

在 MTS 死鎖檢測(cè)基礎(chǔ)結(jié)構(gòu)中包含 MDL 和 ACL 鎖

將提供多線程的 REPLICA 所需的線程序列化基礎(chǔ)結(jié)構(gòu)與 MDL 和 ACL 訪問序列化基礎(chǔ)結(jié)構(gòu)集成在一起,該多線程 REPLICA 與 SOURCE 保持相同的提交順序。其動(dòng)機(jī)是能夠在 REPLICA 主動(dòng)處理變更流時(shí)在 REPLICA 上執(zhí)行任何客戶端語句。此類語句可能會(huì)創(chuàng)建死鎖,必須對(duì)其進(jìn)行檢測(cè),并最終將其破壞以繼續(xù)執(zhí)行。

組復(fù)制

異步復(fù)制通道的自動(dòng)連接故障轉(zhuǎn)移,將確保接收方的發(fā)送方列表與組復(fù)制成員身份更改同步。

六、X 協(xié)議

經(jīng)典的 MySQL 協(xié)議,如果 SQL 查詢使用元數(shù)據(jù)鎖定或睡眠功能,則將定期檢查與服務(wù)器的連接以驗(yàn)證其是否仍然有效。 如果不是,則可以停止查詢,以便它不會(huì)繼續(xù)消耗資源。以前,X 協(xié)議不執(zhí)行這些檢查,并假定連接仍然有效?,F(xiàn)在已為 X 協(xié)議添加了檢查。

從 MySQL 8.0.23 開始,服務(wù)器將通知所有客戶端有關(guān)它是剛剛關(guān)閉連接還是自行關(guān)閉的信息??蛻舳丝梢允褂么诵畔頉Q定重新連接是否有意義,然后重試。

七、其他

優(yōu)化哈希聯(lián)接的哈希表的實(shí)現(xiàn)。目的是提高性能,使用更少的內(nèi)存并改善內(nèi)存控制。

用標(biāo)準(zhǔn) C++11 替換了部分舊的 InnoDB 代碼。加強(qiáng)代碼中使用原子性的規(guī)則和語義,從而使代碼更符合標(biāo)準(zhǔn)。

八、棄用和移除

棄用 relay_log_info_repository 和 master_info_repository 。當(dāng)用戶設(shè)置或讀取 relay_log_info_repository 或 master_info_repository 變量的值時(shí),將出現(xiàn)棄用警告。未來,用于存儲(chǔ)復(fù)制配置和元數(shù)據(jù)的唯一選項(xiàng)將在事務(wù)系統(tǒng)表中。

不贊成使用 FLUSH HOSTS 語句,而建議使用 TRUNCATE performance_schema.host_cache,并將在以后的 MySQL 版本中刪除。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI