您好,登錄后才能下訂單哦!
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
優(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
術(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ù)制成員身份更改同步。
經(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ì)億速云的支持。
免責(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)容。