2020-01-26:mysql8.0做了什么改進(jìn)?
福哥答案2020-01-26:

[2020-01-26:mysql8.0做了什么改進(jìn)?](http://bbs.xiangxueketang.cn/question/1244)
帳戶管理增加了對(duì)角色的支持。
支持原子數(shù)據(jù)定義語(yǔ)句(atomic DDL)。
支持utf8mb4字符集。
InnoDB默認(rèn)情況下在服務(wù)器啟動(dòng)時(shí)啟用二進(jìn)制日志。
[MySQL 8.0的十大新特性](http://www.mamicode.com/info-detail-2211865.html)
今天,讓我們看一下MySQL8.0提升數(shù)據(jù)庫(kù)管理員工作效率的十大改進(jìn)。
從一大堆特性你們找出十點(diǎn)并不太容易,以下是這十大特性:
1.臨時(shí)表的改進(jìn)
2.持續(xù)的全局變量
3.取消默認(rèn)MyISAM系統(tǒng)表
4.UNDO空間回收
5.UTF8性能改進(jìn)
6.取消Query Cache
7.原子DDL
8.更快、性能更好的Schema和Information Schema
9.角色管理
10.加密表空間中的REDO日志和UNDO日志都將被加密
1.臨時(shí)表的改進(jìn)
在MySQL5.7中,所有的臨時(shí)表都被創(chuàng)建在一個(gè)叫“ibtmp1”的表空間中。另外,臨時(shí)表的元數(shù)據(jù)也將存儲(chǔ)在內(nèi)存中(不再存儲(chǔ)在frm文件中)。
在MySQL8.0中,使用臨時(shí)表存儲(chǔ)引擎作為臨時(shí)表(為優(yōu)化JOIN、UNION等操作而創(chuàng)建的)存儲(chǔ)的默認(rèn)引擎,從而替換掉了原有的內(nèi)存存儲(chǔ)引擎。
新的引擎使得VARCHAR和VARBINARY列的存儲(chǔ)更為高效(所有存儲(chǔ)空間得到完全分配)。
2.持續(xù)的全局變量
MySQL8.0現(xiàn)在可以設(shè)置變量并使其改變持續(xù)到服務(wù)器重新啟動(dòng)。
使用此語(yǔ)法結(jié)合新的RESTART命令,可以非常容易的從shell中配置MySQL。這對(duì)云計(jì)算用戶是一個(gè)十分友好的功能。
3.取消默認(rèn)MyISAM系統(tǒng)表
由于采用了新的本地?cái)?shù)據(jù)字典,現(xiàn)在我們不在需要MyISAM系統(tǒng)表了!
這些表和數(shù)據(jù)字典表現(xiàn)在都在一個(gè)名為mysql.idb的InNoDB表空間文件中。
這意味著如果你沒(méi)有明確使用MyISAM表(為了你的數(shù)據(jù),我們并不建議這樣做),你可以創(chuàng)建一個(gè)沒(méi)有任何MyISAM表的MySQL實(shí)例。
4.UNDO空間回收
在MySQL5.7中,我們已經(jīng)可以截?cái)郩NDO空間了(設(shè)置innodb_undo_log_truncate,默認(rèn)情況下禁用)。
在MySQL8中,我們改進(jìn)了磁盤(pán)格式來(lái)使得每個(gè)UNDO表有大量的UNDO段。
此外,現(xiàn)在默認(rèn)為兩個(gè)單獨(dú)的UNDO表空間(而非InnoDB系統(tǒng)表空間(最小為2,大小動(dòng)態(tài)變化))中創(chuàng)建UNDO段。
我們不推薦使用innodb_undo_tablespaces來(lái)設(shè)置該值,因?yàn)槲覀儗⑻峁㏒QL命令讓數(shù)據(jù)庫(kù)管理員與UNDO表空間進(jìn)行交互。
自動(dòng)截?cái)郩NDO表空間默認(rèn)啟用。
5.UTF8性能改進(jìn)
UTF8性能
由于默認(rèn)的字符集已經(jīng)從latin1改為utf8mb4,因此現(xiàn)在UTF8的速度要快得多,在特定查詢時(shí)速度提高了1800%! Emojis現(xiàn)在無(wú)處不在,MySQL當(dāng)然是選擇支持他啦!??
6.取消Query Cache
我在性能審計(jì)中建議的第一件事就是禁用Query Cache,因?yàn)樗o設(shè)計(jì)帶來(lái)了很多麻煩。
MySQL QC造成的問(wèn)題比它解決問(wèn)題要多的多。因此我們決定在MySQL 8.0中取消它,因?yàn)榇蠹揖筒粦?yīng)該使用它。
如果您的工作負(fù)載需要Query Cache,那么您應(yīng)該改用ProxySQL替代Query Cache。
7.原子DDL
由于采用了新的數(shù)據(jù)字典,MySQL 8.0現(xiàn)在支持原子數(shù)據(jù)定義語(yǔ)句(原子DDL)。
這意味著當(dāng)執(zhí)行DDL時(shí),數(shù)據(jù)字典更新,存儲(chǔ)引擎操作以及二進(jìn)制日志中的寫(xiě)入操作會(huì)合并到單個(gè)原子事務(wù)中,該事務(wù)要么完全執(zhí)行,要么根本不執(zhí)行。
這提高了DDL的穩(wěn)定性保證未完成的DDL不會(huì)留下任何不完整的數(shù)據(jù)。
8.更快、性能更好的Schema和Information Schema
我們對(duì)Schema進(jìn)行了許多改進(jìn),如假索引和直方圖。
得益于假索引的存在,像SELECT * FROM sys.session這樣的查詢速度提高了30倍。
查詢盡可能避免進(jìn)行表掃描,并且索引的使用可大大縮短執(zhí)行時(shí)間。
除此之外,Performance Schema還提供語(yǔ)句延遲的直方圖。 新的直方圖也使得優(yōu)化器更為高效。
新的數(shù)據(jù)字典也使得Information Schema得到了改進(jìn),現(xiàn)在不需要大量的.frm表結(jié)構(gòu)定義文件。
另外Information Schema現(xiàn)在支持?jǐn)U展到超過(guò)1,000,000張表啦!
9.角色管理
MySQL 8.0中添加了SQL角色功能。 角色是指定的擁有特定權(quán)限的集合。 像用戶帳戶一樣,角色可以擁有授予和撤消的權(quán)限。
角色可以默認(rèn)或采用session修改。 也可強(qiáng)制設(shè)置角色。
10.加密表空間中的REDO日志和UNDO日志都將被加密
在MySQL 5.7中,可以為存儲(chǔ)在每個(gè)表中的表加密InnoDB表空間。 在MySQL 8.0中,我們通過(guò)為UNDO和REDO日志添加加密來(lái)完成此功能。
除此以外,還有很多改進(jìn)我沒(méi)有列完。 還有很多其他不錯(cuò)的功能。 我想在下面再列出一些我認(rèn)為重要的(盡管所有的改進(jìn)都很重要??)
1.持久自動(dòng)增量。
2.InnoDB的自校正。
3.JSON性能優(yōu)化。
3.隱形索引。
4.新的備份鎖。
5.資源組功能。
6.額外的二進(jìn)制日志元數(shù)據(jù)。
7.以及OpenSSL for Community Edition。
***
[評(píng)論](https://user.qzone.qq.com/3182319461/blog/1611614299)
MySQL
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。