手机看片精品高清国产日韩,色先锋资源综合网,国产哺乳奶水91在线播放,乱伦小说亚洲色图欧洲电影

淺談MySQL8.0新特性

2025-01-15 14:09:28 378

MySQL 8.0版本首次發(fā)布于2018年下旬,目前已經(jīng)更新至8.0.26小版本。許多人在首次聽到8.0時(shí),常會(huì)感到自己錯(cuò)過了不少內(nèi)容,畢竟目前最常用的版本仍是5.7。MySQL的版本差異較大,從下圖可以看出,6版本被定位為過渡版本,旨在引入“更加頻繁和及時(shí)的MySQL服務(wù)器版本”,而7版本則專門為集群版本預(yù)留。因此,8.0版本成為了MySQL常用應(yīng)用場景的下一個(gè)重要版本號(hào)。


9c0ad89df3451e60d0cf2fead2060925.png

MySQL8.0除了給人以版本跨度大的感覺外,確實(shí)也做出了很多功能特性的新增或優(yōu)化,下面藍(lán)隊(duì)云將選取部分新特性并通過介紹使大家能夠?qū)π掳姹镜腗ySQL有更好的了解。

一、My SQL數(shù)據(jù)字典

數(shù)據(jù)字典是數(shù)據(jù)庫重要的組成部分,是數(shù)據(jù)庫中各類元數(shù)據(jù)的集合,在MySQL8.0之前,數(shù)據(jù)庫的數(shù)據(jù)字典。


主要由以下幾部分組成:

  • frm 、.opt 、.par 、.TRN 、.TRG等與表、庫、分區(qū)、觸發(fā)器相關(guān)的操作系統(tǒng)文件;

  • information_schema中的非InnoDB系統(tǒng)表;

  • information_schema中的InnoDB系統(tǒng)表


這種數(shù)據(jù)字典被分布到多個(gè)地方的方式,并不利于元數(shù)據(jù)的統(tǒng)一管理,同時(shí)由于操作系統(tǒng)文件以及非InnoDB的系統(tǒng)表,均不支持事務(wù),也影響到了MySQL DDL的ACID。因此在MySQL在8.0版本直后對(duì)于數(shù)據(jù)字典,做出了比較大的改進(jìn),一方面是移除了.frm 、.opt 、.par 、.TRN 、.TRG等操作系統(tǒng)文件,另一方面是將數(shù)據(jù)字典統(tǒng)一改進(jìn)為InnoDB存儲(chǔ)引擎存儲(chǔ)。設(shè)計(jì)理念參照了Oracle數(shù)據(jù)庫的方式,將元數(shù)據(jù)信息存放在基表中,然后通過視圖的方式提供給用戶查詢。因此在8.0版本的information_schema中,我們可看到的數(shù)據(jù)字典信息如下:


image.png


新的數(shù)據(jù)字典為MySQL帶來兩個(gè)積極的變化,一就是這種直接查表并且可利用新增的數(shù)據(jù)字典緩存的訪問方式提升了INFORMATIONS_SCHEMA的查詢性能,二是對(duì)原子DDL的支持,即在DDL操作過程中出現(xiàn)錯(cuò)誤的時(shí)候,是可以完整回退的,這在之前版本的DDL操作中是不支持的。


二、原子DDL

在8.0以前的版本中,MySQL是不支持原子DDL的,也就意味著一個(gè)DROP TABLE tab1,tab2;的語句由可能由于服務(wù)器crash或其他異常錯(cuò)誤導(dǎo)致部分成功部分失敗。而隨8.0中數(shù)據(jù)字典的改進(jìn),數(shù)據(jù)字典的更新,存儲(chǔ)引擎操作,寫?進(jìn)制日志結(jié)合成了一個(gè)事務(wù),也就是實(shí)現(xiàn)了對(duì)原子DDL的支持。


其具體過程如下:

  • Prepare:創(chuàng)建需要的對(duì)象,并將ddl日志寫入到mysql.innodb_ddl_log;ddl日志記錄了如何前滾和回滾ddl操作。

  • Perform:執(zhí)行ddl操作。

  • Commit:更新數(shù)據(jù)字典并提交。

  • post-ddl:重播并從mysql.innodb_ddl_log表格中刪除DDL?志。為確保回滾可以安全執(zhí)??不引?不?致性,在此最后階段執(zhí)??件操作(如重命名或刪除數(shù)據(jù)文件)。這一階段還從 mysql.innodb_dynamic_metadata的數(shù)據(jù)字典表刪除的動(dòng)態(tài)元數(shù)據(jù)為了DROP TABLE,TRUNCATE和其它重建表的DDL操作。


原子DDL對(duì)于MySQL與其說是新特性,但更像是修復(fù)了8.0以前版本中的缺陷,使用戶對(duì)DDL操作的過程更為放心。


三、索引優(yōu)化

隱藏索引、降序索引、函數(shù)索引再8.0版本中紛紛登場,熟悉Oracle的同學(xué)對(duì)這3中索引一定也不陌生,甚至在MySQL中的創(chuàng)建語法都是和Oracle相同的,此處就不再贅述。隱藏索引主要起到灰度的作用,可以利用其特性減少索引回收及發(fā)布可能帶來的風(fēng)險(xiǎn),在運(yùn)維過程中是種比較常用的手段。降序索引則針對(duì)具體的業(yè)務(wù)場景,配合特定的SQL使用可以大幅減少排序帶來的成本。而函數(shù)索引就更為靈活了,不過在Oracle不推薦使用函數(shù)索引,在MySQL中則更不推薦使用,函數(shù)索引作為臨時(shí)手段可以救火,但根本還是應(yīng)從設(shè)計(jì)層面出發(fā)。


四、賬戶與安全

在MySQL賬戶和安全性方面,8.0版本也做出了一定程度的優(yōu)化。


主要可分為以下幾個(gè)部分:


1. 創(chuàng)建及授權(quán)

在MySQL5.7的版本可以通過一條語句完成賬戶的創(chuàng)建授權(quán)操作

grant all privileges on *.* to '用戶名'@'主機(jī)' identified by '密碼';

在MySQL8.0則被拆成了兩步執(zhí)行

create user '用戶名'@'主機(jī)' identified by '密碼';

grant all privileges on *.* to '用戶名'@'主機(jī)';


2. 認(rèn)證插件更新

MySQL8.0版本的默認(rèn)認(rèn)證插件由mysql_native_password改為了caching_sha2_password,因此使用NAVICAT之類客戶端工具時(shí)需可能會(huì)遇到1251的認(rèn)證錯(cuò)誤。


3. 口令管理

新增了以下參數(shù)來控制口令修改策略

  • password_history:修改密碼不允許與最近幾次使用或的密碼重復(fù);

  • password_reuse_interval:修改密碼不允許與最近多少天的使用過的密碼重復(fù);

  • password_require_current:修改密碼是否需要提供當(dāng)前的登錄密碼;


4. 角色

可以使用create role命令創(chuàng)建角色并對(duì)角色再進(jìn)行多個(gè)權(quán)限的grant授予,最后再將角色賦予用戶,通過這種方式,對(duì)用戶權(quán)限的管理也變得更為清晰易操作。


賬戶安全這部分,給人的感受也是越來越接近Oracle數(shù)據(jù)庫,總的來說目的還是為了提升其安全性,但目前來看,認(rèn)證插件遇到的問題還是較多的,主要原因在于有些常用的測試或管理工具還未能及時(shí)支持caching_sha2_password這種認(rèn)證方式,因此很多環(huán)境再8.0仍然保持5.7的mysql_native_password認(rèn)證設(shè)置。


除以上介紹的內(nèi)容外,MySQL在8.0中也新增了很多JSON函數(shù),使得普通格式數(shù)據(jù)可以方便快捷的轉(zhuǎn)換為JSON數(shù)據(jù),同時(shí)也可對(duì)JSON格式數(shù)據(jù)進(jìn)行判斷、校驗(yàn)、合并提取等操作。SQL語法上也新增了with as的通用表達(dá)式。引擎方面對(duì)于Innodb引擎也有了較多的增強(qiáng),如自增列持久化、死鎖檢測,甚至可以通過memcached實(shí)現(xiàn)類似NOSQL的簡單get操作。運(yùn)維方面也增加了資源管理的功能,REDO及UNDO的使用也做出優(yōu)化。總之MySQL 8.0在使用上帶來的變化還是非常豐富多彩的,我們應(yīng)在大版本的迭代過程中,關(guān)注基礎(chǔ)軟件做出的積極調(diào)整,并合理的將其運(yùn)用到系統(tǒng)建設(shè)工作中。


想了解更多技術(shù)小分享歡迎上藍(lán)隊(duì)云官網(wǎng)查詢,更多免費(fèi)技術(shù)學(xué)習(xí)文檔,藍(lán)隊(duì)云期待與您一起探索。


提交成功!非常感謝您的反饋,我們會(huì)繼續(xù)努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問題: