MySQL:MySQL 5.7 與 8.0 的對比分析

1. 功能

NoSQL支持:

MySQL 從 5.7 版本開始提供 NoSQL 存儲功能奸远,在 8.0 版本中這部分功能也得到了更大的改進(jìn)澡屡。

JSON:

MySQL 8 大幅改進(jìn)了對 JSON 的支持匾荆,添加了基于路徑查詢參數(shù)從 JSON 字段中抽取數(shù)據(jù)的 JSON_EXTRACT() 函數(shù),以及用于將數(shù)據(jù)分別組合到 JSON 數(shù)組和對象中的 JSON_ARRAYAGG() 和 JSON_OBJECTAGG() 聚合函數(shù)。

窗口函數(shù):

從 MySQL 8.0 開始晃虫,新增了一個叫窗口函數(shù)的概念,它可以用來實(shí)現(xiàn)若干新的查詢方式扣墩。
窗口函數(shù)與 SUM()哲银、COUNT() 這種集合函數(shù)類似,但它不會將多行查詢結(jié)果合并為一行呻惕,而是將結(jié)果放回多行當(dāng)中荆责。即窗口函數(shù)不需要 GROUP BY。

隱藏索引:

在 MySQL 8.0 中亚脆,索引可以被“隱藏”和“顯示”做院。當(dāng)對索引進(jìn)行隱藏時,它不會被查詢優(yōu)化器所使用濒持,我們可以使用這個特性用于性能調(diào)試键耕。
在創(chuàng)建完索引后,我們先將其隱藏柑营,然后觀察其對數(shù)據(jù)庫的影響屈雄。如果數(shù)據(jù)庫性能有所下降,說明這個索引是有用的官套,然后將其“恢復(fù)顯示”即可酒奶。如果數(shù)據(jù)庫性能看不出變化蚁孔,說明這個索引是多余的,可以考慮刪掉惋嚎。

降序索引:

MySQL 8.0 為索引提供按降序方式進(jìn)行排序的支持杠氢,在這種索引中的值也會按降序的方式進(jìn)行排序。

通用表表達(dá)式式(Common Table Expressions CTE):

在復(fù)雜的查詢中使用嵌入式表時瘸彤,使用 CTE 使得查詢語句更清晰修然。

UTF-8 編碼:

從 MySQL 8 開始,使用 utf8mb4 作為 MySQL 的默認(rèn)字符集质况。

支持表 DDL 的原子性:

InnoDB 現(xiàn)在支持表 DDL 的原子性,也就是 InnoDB 表上的 DDL 也可以實(shí)現(xiàn)事務(wù)完整性玻靡,要么失敗回滾结榄,要么成功提交,不至于出現(xiàn) DDL 時部分成功的問題囤捻,此外還支持 crash-safe 特性臼朗,元數(shù)據(jù)存儲在單個事務(wù)數(shù)據(jù)字典中。

支持 crash-safe 特性:

元數(shù)據(jù)存儲在單個事務(wù)數(shù)據(jù)字典中蝎土。

高可用性:

InnoDB 集群為數(shù)據(jù)庫提供集成的原生 HA 解決方案视哑。

caching_sha2_password 身份驗(yàn)證插件:

caching_sha2_password是MySQL 8.0中的默認(rèn)身份驗(yàn)證插件,替換了mysql 5.7的mysql_native_password誊涯,身份驗(yàn)證安全性能提升挡毅。

授權(quán)

與帳戶管理相關(guān)的授權(quán)語法略有差異:
MySQL5.7創(chuàng)建用戶和用戶授權(quán)命令可以同時執(zhí)行
grant all privileges on . to 'Gary'@'%' identified by 'Gary@2019'
MySQL8.0創(chuàng)建用戶和用戶授權(quán)的命令需要分開執(zhí)行

創(chuàng)建用戶

create user 'Gary'@'%' identified by 'Gary@2019';

用戶授權(quán)【給予所有權(quán)限】

grant all privileges on . to 'Gary'@'%'

2. 性能:

根據(jù)官方說法,MySQL 8 要比 MySQL 5.7 快 2 倍暴构。
性能提升主要集中在三個領(lǐng)域:

  • 讀寫工作負(fù)載
  • I/O密集型工作負(fù)載
  • 熱點(diǎn)競爭問題工作負(fù)載跪呈。

以下幾張圖,是騰訊團(tuán)隊(duì)測試的MySQL 5.7 與 8.0 的對比分析數(shù)據(jù)取逾,可以作為參考耗绿。


image.png
image.png
image.png
image.png

當(dāng)線程數(shù)量增加時,MySQL 8.0明顯優(yōu)于MySQL 5.7砾隅!

降序索引

MySQL 8.0 降序索引 避免了“filesort”误阻,顯著提升了讀取性能。

在8.0版本中晴埂,影響MySQL讀取性能的重要新增支持是:可以按降序(或正向索引掃描)創(chuàng)建索引的能力究反。從語法上,MySQL 4就支持了降序索引邑时,但正如官方文檔所言奴紧,"they are parsed but ignored",實(shí)際創(chuàng)建的還是升序索引晶丘。
以前的版本只有升序或 反向索引掃描黍氮,如果需要降序唐含,MySQL必須執(zhí)行filesort(如果需要filesort,需要檢查max_length_for_sort_data的值)沫浆。當(dāng)最有效的掃描順序混合某些列的升序和其他列的降序時捷枯,降序索引還使優(yōu)化器可以使用多列索引。
如果只對單個列進(jìn)行排序专执,降序索引的意義不是太大淮捆,無論是升序還是降序,升序索引完全可以應(yīng)付本股。如果一個查詢攀痊,需要對多個列進(jìn)行排序,且順序要求不一致拄显。在這種場景下苟径,要想避免數(shù)據(jù)庫額外的排序-“filesort”,最好的方法就是使用降序索引躬审。

避免隱式排序

由于降序索引的引入棘街,MySQL 8.0再也不會對group by操作進(jìn)行隱式排序。

參考文獻(xiàn):

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末遭殉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子博助,更是在濱河造成了極大的恐慌险污,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翔始,死亡現(xiàn)場離奇詭異罗心,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)城瞎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進(jìn)店門渤闷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人脖镀,你說我怎么就攤上這事飒箭。” “怎么了蜒灰?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵弦蹂,是天一觀的道長。 經(jīng)常有香客問我强窖,道長凸椿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任翅溺,我火速辦了婚禮脑漫,結(jié)果婚禮上髓抑,老公的妹妹穿的比我還像新娘。我一直安慰自己优幸,他們只是感情好吨拍,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著网杆,像睡著了一般羹饰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上碳却,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天队秩,我揣著相機(jī)與錄音,去河邊找鬼昼浦。 笑死刹碾,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的座柱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼物舒,長吁一口氣:“原來是場噩夢啊……” “哼色洞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起冠胯,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤火诸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后荠察,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體置蜀,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年悉盆,在試婚紗的時候發(fā)現(xiàn)自己被綠了盯荤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡焕盟,死狀恐怖秋秤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情脚翘,我是刑警寧澤灼卢,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站来农,受9級特大地震影響鞋真,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沃于,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一涩咖、第九天 我趴在偏房一處隱蔽的房頂上張望海诲。 院中可真熱鬧,春花似錦抠藕、人聲如沸饿肺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽敬辣。三九已至,卻和暖如春零院,著一層夾襖步出監(jiān)牢的瞬間溉跃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工告抄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撰茎,地道東北人。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓打洼,卻偏偏與公主長得像龄糊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子募疮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內(nèi)容