2021-02-21 分類: 網(wǎng)站建設(shè)
MySQL 5.7 到 8.0,Oracle 官方跳躍了 Major Version 版本號,隨之而來的就是在 MySQL 8.0 上做了許多重大更新,在往企業(yè)級數(shù)據(jù)庫的路上大步前行,全新 Data Dictionary 設(shè)計,支持 Atomic DDL,全新的版本升級策略,安全和賬號管理加強,InnoDB 功能增強等,目前小版本已經(jīng) release 到 8.0.16,新的功能仍然在持續(xù)推出。
RDS MySQL 8.0 產(chǎn)品是阿里云推出的 MySQL 系列云產(chǎn)品之一,使用完全兼容 MySQL 8.0 的阿 里云 AliSQL 8.0 分支,除了官方在 MySQL 8.0 推出的全新功能外,AliSQL 沉淀了許多在 Alibaba 集團電商業(yè)務(wù)和云上幾十萬客戶在使用 MySQL 過程中遇到的問題和需求,以此來加固AliSQL, 提升 AliSQL 的性能和穩(wěn)定性。
下面分別對 MySQL 8.0 和 AliSQL 8.0 相關(guān)的版本和功能做簡短的介紹:
1. 數(shù)據(jù)字典
MySQL 8.0 摒棄了 Server Layer 定義的 FRM 文件和其它非事務(wù)表,使用了一組 InnoDB 表來 保存數(shù)據(jù)字典,支持事務(wù)特性。
2. Atomic DDL
在 Data Dictionary 支持事務(wù)特性的基礎(chǔ)上,8.0 增加了一個 DDL log 字典表,用來協(xié)調(diào)在
DDL 過程中,對數(shù)據(jù)字典,文件系統(tǒng) 和 事務(wù)系統(tǒng)的修改,做到原子性。
3. 升級
從 8.0.16 開始,對于系統(tǒng)表的修改,拋棄了 mysql_upgrade工具,使用在系統(tǒng)重啟的時候,進 行升級。
4. 安全和賬號管理
賬號方面,從 8.0 開始,支持 role 對權(quán)限進行便捷管理,以及新增多個系統(tǒng)權(quán)限,分別對應(yīng)新 增了 ROLE_EDGES,GLOBAL_GRANTS 兩個系統(tǒng)表;mysql schema 下的涉及權(quán)限和用戶相關(guān)的表 更改成 InnoDB 引擎,支持事務(wù)特性,保證了賬號管理語句的原子性。
認證方面,caching_sha2_password 作為默認的認證 plugin,以提升安全,但要注意并不能和 8.0 之前的client進行兼容。
鏈路加密,如果編譯了Openssl 1.1.1 及以上,MySQL 8.0 ssl 將支持到 TLSv1.3 版本。
系統(tǒng)賬號,在 8.0.16 新增 SYSTEM_USER 權(quán)限,用于區(qū)分 系統(tǒng)賬號還是普通賬戶,可以對用戶 進行分類管理。
5. Auto increment 持久化
在 InnoDB 引擎中,新增了一個引擎私有的系統(tǒng)表 innodb_dynamic_metadata,自增值就保存 在這個表里,在對每張表進行修改 auto increment 值的時候,都使用 redo log 進行保護,在做
heckpoint 的時候,持久化到這個系統(tǒng)表中,保證下次重啟后,auto increment 能夠從持久化中恢 復(fù)出來,并且不受事務(wù)上下文回滾而影響。
6. 死鎖檢測
在高并發(fā)的情況下,InnoDB 引擎中對于7. 臨時表
在 InnoDB 引擎中,用戶創(chuàng)建的臨時表將統(tǒng)一到 ibtmp 文件的臨時表空間中; 對于系統(tǒng)運行過 程中產(chǎn)生內(nèi)存臨時表,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 整張表數(shù)據(jù)的問題?,F(xiàn)在可以快速的增加字段,只修改數(shù)據(jù)字典,而不用修改表中的記錄本身。
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,參數(shù)控制session內(nèi)的并行度。
11. Redo優(yōu)化
Redo的寫入一直是 InnoDB 高并發(fā)情況下的瓶頸,8.0 開始:
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)化器和對象相關(guān)
1) 支持 invisible index,方便用戶和 DBA 調(diào)試 statement。
2)descending indexes,提升降序掃描的效率。
3)Common table expressions,支持 with 語法完成。
4)Window functions,增加大量窗口函數(shù)
5)Regular expression,重新設(shè)計了正則表達式的支持。
除了 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 對象的支持,方便和高效的獲取單調(diào)唯一值:
3. 大文件異步刪除
InnoDB 大文件刪除帶來穩(wěn)定性開銷,所以 AliSQL 8.0 提供了異步刪數(shù)據(jù)文件的機制:
參數(shù)設(shè)置:
展示臨時文件列表:
4. 隱含主鍵
AliSQL 針對用戶沒有建 PK 的表,默認添加一個隱含主鍵,以加速 slave 端的 SQL apply。 查看方法:
5. 事務(wù)超時
AliSQL 新增 kill_idle_transaction_timeout 參數(shù),以便對超時的事務(wù)連接進行 kill,防止事務(wù)長時間未提交帶來的系統(tǒng)風(fēng)險。
6. Rotate slow log
AliSQL 8.0 針對 slow log 收集過程中,對用戶實例的影響,以及truncate帶來的阻塞可能,提 供了rotate slow log table的功能,影響更小,更快捷,并保證零數(shù)據(jù)丟失的收集方式。
7. 審計日志
AliSQL 8.0 重新設(shè)計的 audit log 模塊,提供了四種刷新策略,分別是:
提供適合不同業(yè)務(wù)模式的 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 技術(shù)詳解
鏈接地址:http://muchs.cn/news45/102095.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、品牌網(wǎng)站設(shè)計、小程序開發(fā)、手機網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容