MySQL 8.0 技術詳解

2021-02-21    分類: 網站建設

MySQL 8.0 簡介

MySQL 5.7 到 8.0,Oracle 官方跳躍了 Major Version 版本號,隨之而來的就是在 MySQL 8.0 上做了許多重大更新,在往企業(yè)級數據庫的路上大步前行,全新 Data Dictionary 設計,支持 Atomic DDL,全新的版本升級策略,安全和賬號管理加強,InnoDB 功能增強等,目前小版本已經 release 到 8.0.16,新的功能仍然在持續(xù)推出。

RDS MySQL 8.0 產品是阿里云推出的 MySQL 系列云產品之一,使用完全兼容 MySQL 8.0 的阿 里云 AliSQL 8.0 分支,除了官方在 MySQL 8.0 推出的全新功能外,AliSQL 沉淀了許多在 Alibaba 集團電商業(yè)務和云上幾十萬客戶在使用 MySQL 過程中遇到的問題和需求,以此來加固AliSQL, 提升 AliSQL 的性能和穩(wěn)定性。

下面分別對 MySQL 8.0 和 AliSQL 8.0 相關的版本和功能做簡短的介紹:

MySQL 8.0 版本更新

1. 數據字典

MySQL 8.0 摒棄了 Server Layer 定義的 FRM 文件和其它非事務表,使用了一組 InnoDB 表來 保存數據字典,支持事務特性。

2. Atomic DDL

在 Data Dictionary 支持事務特性的基礎上,8.0 增加了一個 DDL log 字典表,用來協(xié)調在

DDL 過程中,對數據字典,文件系統(tǒng) 和 事務系統(tǒng)的修改,做到原子性。

3. 升級

從 8.0.16 開始,對于系統(tǒng)表的修改,拋棄了 mysql_upgrade工具,使用在系統(tǒng)重啟的時候,進 行升級。

4. 安全和賬號管理

賬號方面,從 8.0 開始,支持 role 對權限進行便捷管理,以及新增多個系統(tǒng)權限,分別對應新 增了 ROLE_EDGES,GLOBAL_GRANTS 兩個系統(tǒng)表;mysql schema 下的涉及權限和用戶相關的表 更改成 InnoDB 引擎,支持事務特性,保證了賬號管理語句的原子性。

認證方面,caching_sha2_password 作為默認的認證 plugin,以提升安全,但要注意并不能和 8.0 之前的client進行兼容。

鏈路加密,如果編譯了Openssl 1.1.1 及以上,MySQL 8.0 ssl 將支持到 TLSv1.3 版本。

系統(tǒng)賬號,在 8.0.16 新增 SYSTEM_USER 權限,用于區(qū)分 系統(tǒng)賬號還是普通賬戶,可以對用戶 進行分類管理。

5. Auto increment 持久化

在 InnoDB 引擎中,新增了一個引擎私有的系統(tǒng)表 innodb_dynamic_metadata,自增值就保存 在這個表里,在對每張表進行修改 auto increment 值的時候,都使用 redo log 進行保護,在做

heckpoint 的時候,持久化到這個系統(tǒng)表中,保證下次重啟后,auto increment 能夠從持久化中恢 復出來,并且不受事務上下文回滾而影響。

6. 死鎖檢測

在高并發(fā)的情況下,InnoDB 引擎中對于7. 臨時表

在 InnoDB 引擎中,用戶創(chuàng)建的臨時表將統(tǒng)一到 ibtmp 文件的臨時表空間中; 對于系統(tǒng)運行過 程中產生內存臨時表,8.0后啟用了新的 TempTable 引擎,支持 blob 字段,功能上優(yōu)于 memory ngine。

8. Lock

SELECT ... FOR SHARE 和 SELECT ... FOR UPDATE 新增了 NOWAIT 和SKIP LOCKED 語法,減少長時間和非必要的阻塞。

9. Instant add column

InnoDB 解決了長期困擾 DBA 的加字段要 copy 整張表數據的問題。現在可以快速的增加字段,只修改數據字典,而不用修改表中的記錄本身。

10. 并行查詢

InnoDB 目前支持在 clustered index 上進行并行查詢,提供innodb_parallel_read_threads,https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_parallel_read_threads,參數控制session內的并行度。

11. Redo優(yōu)化

Redo的寫入一直是 InnoDB 高并發(fā)情況下的瓶頸,8.0 開始:

  • 用戶線程可以并發(fā)的copy redo 日志到 log buffer中
  • 用戶線程可以以更松散的方式把 dirty block 加入到臟塊鏈表中
  • 獨立的寫線程完成 redo 的持久化

12. Json加強

在Json上,8.0 增加了更多的功能性,詳見 MySQL 8.0 的 document。

13. Partial update on lob

InnoDB 繼續(xù)優(yōu)化 partial update on lob data,對于僅僅修改很少字節(jié)的 lob 字段,能夠大幅 減少 undo data,并提升效率。

14. 優(yōu)化器和對象相關

1) 支持 invisible index,方便用戶和 DBA 調試 statement。

2)descending indexes,提升降序掃描的效率。

3)Common table expressions,支持 with 語法完成。

4)Window functions,增加大量窗口函數

5)Regular expression,重新設計了正則表達式的支持。

AliSQL 8.0 功能介紹

除了 MySQL 8.0 官方的特性以外,AliSQL 8.0 在新功能,性能提升,穩(wěn)定性保證,可診斷性上 做了大量的改進:

1. 診斷

Top SQL:

AliSQL 在 statement 級別上,增加了新的性能診斷指標,方便更快更準確的量化 SQL 的開銷:


效果如下所示:


表和索引統(tǒng)計

新增表和索引級別的統(tǒng)計:


InnoDB IO 統(tǒng)計


2. Sequence

AliSQL 8.0 增加對 Sequence 對象的支持,方便和高效的獲取單調唯一值:


3. 大文件異步刪除

InnoDB 大文件刪除帶來穩(wěn)定性開銷,所以 AliSQL 8.0 提供了異步刪數據文件的機制:

參數設置:


展示臨時文件列表:


4. 隱含主鍵

AliSQL 針對用戶沒有建 PK 的表,默認添加一個隱含主鍵,以加速 slave 端的 SQL apply。 查看方法:


5. 事務超時

AliSQL 新增 kill_idle_transaction_timeout 參數,以便對超時的事務連接進行 kill,防止事務長時間未提交帶來的系統(tǒng)風險。

6. Rotate slow log

AliSQL 8.0 針對 slow log 收集過程中,對用戶實例的影響,以及truncate帶來的阻塞可能,提 供了rotate slow log table的功能,影響更小,更快捷,并保證零數據丟失的收集方式。


7. 審計日志

AliSQL 8.0 重新設計的 audit log 模塊,提供了四種刷新策略,分別是:


提供適合不同業(yè)務模式的 audit log 配置供用戶選擇。

8. 安全特性

AliSQL 針對 ssl 鏈路,靜態(tài)編譯了Openssl 1.0 版本,目前支持到 TLSv1.2 版本。

9. 優(yōu)化

AliSQL 針對 semi sync 和 MDL 進行了性能優(yōu)化,提升了 semi sync 的性能,大幅減少了 MDL 鎖阻塞的可能性。

當前文章:MySQL 8.0 技術詳解
鏈接地址:http://www.bm7419.com/news45/102095.html

成都網站建設公司_創(chuàng)新互聯,為您提供App開發(fā)、品牌網站設計小程序開發(fā)、手機網站建設、網站建設、外貿建站

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

網站優(yōu)化排名