MySQL 8.0即將來(lái)臨,它將為MySQL帶來(lái)一系列巨大變化。MySQL 5.7已經(jīng)推出一年多了,其原生JSON數(shù)據(jù)類(lèi)型受到了廣大用戶(hù)的熱烈歡迎,它為用戶(hù)帶來(lái)了更好的性能和更棒的安全性。但5.7仍有不足,仍然需要不斷地更新打磨,這就是MySQL推出8.0的重大意義。
版本6和7去哪了?
可能有人會(huì)有這樣的疑問(wèn),MySQL的版本號(hào)似乎從5.X直接蹦到了8,中間的6和7呢?其實(shí)早在幾年前,在Sun Microsystems購(gòu)買(mǎi)MySQL AB之前,其實(shí)是有一個(gè)編號(hào)為6的MySQL版本的。遺憾的是,所有權(quán)的改變使6最終枯竭了。第二年,Oracle又接管了SUN,自然也順帶接管了MySQL。當(dāng)時(shí)的MySQL就是5.X系列,之后該系列則一直延續(xù)了很多年,而MySQL Cluster多年來(lái)則一直使用7系列。隨著MySQL新版本的一系列重大變化,開(kāi)發(fā)人員認(rèn)為這次足以大幅修改版本號(hào)了。
最大亮點(diǎn):事務(wù)性數(shù)據(jù)字典
打開(kāi)一個(gè)MySQL schema的目錄并查看所有文件,就會(huì)看見(jiàn).frm,.myi,.myd等,這些文件包含數(shù)據(jù)庫(kù)schema上的一些元數(shù)據(jù)。二十年前,這是一個(gè)很好的方法,但I(xiàn)nnoDB是一個(gè)具備崩潰恢復(fù)能力的存儲(chǔ)引擎,可以安全地保存所有元數(shù)據(jù)。這意味著.frm,.myi,.myd文件損壞不會(huì)影響用戶(hù)工作。所以,在MySQL 8.0中,這些文件被刪除,在數(shù)據(jù)字典表中Information Schema作為視圖已經(jīng)被重新實(shí)現(xiàn)。同時(shí),開(kāi)發(fā)人員刪除了文件系統(tǒng)的最大文件數(shù)作為數(shù)據(jù)庫(kù)數(shù)量的限制因素,現(xiàn)在你可以在數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)百萬(wàn)個(gè)表。
這也使得更改表更加容易。過(guò)去,由于舊數(shù)據(jù)字典連接在一起,ALTER TABLE命令的執(zhí)行可能需要很長(zhǎng)時(shí)間。新的數(shù)據(jù)字典允許用戶(hù)在提交更改之前啟動(dòng)事務(wù),執(zhí)行ALTER TABLE語(yǔ)句并測(cè)試更改。
其他讓人期待的功能
8.0版本還有許多值得期待的新功能,比如窗口函數(shù),用戶(hù)角色權(quán)限,不可見(jiàn)索引等。此外,MySQL已經(jīng)開(kāi)始從主要服務(wù)器版本中解除大型新功能,如組復(fù)制和文檔存儲(chǔ)。這些將作為插件,允許用戶(hù)快速添加新功能,而不是等待服務(wù)器的發(fā)布周期。
要注意的是,MySQL 8.0版本暫不支持MySQL集群,除此之外,還有哪些新功能讓我們拭目以待吧!