MySQL 8 新特性介紹
作者:蜂巢建站 時(shí)間:2018-07-30 11:25:16 點(diǎn)擊:31941
MySQL是眾多網(wǎng)站技術(shù)棧中的標準配置,是廣受歡迎的開(kāi)源數據庫,已經(jīng)推出了8.0的第一個(gè)候選發(fā)行版本。
MySQL 8.0的新特性包括:
對Unicode 9.0的開(kāi)箱即用的完整支持
支持窗口函數和遞歸SQL語(yǔ)法,這在以往是不可能或者很難才能編寫(xiě)這樣的查詢(xún)語(yǔ)句
對原生JSON數據和文檔存儲功能的增強支持
MySQL 8.0的發(fā)布,跳過(guò)了多個(gè)版本號(從5.5開(kāi)始),由于6.0修改和7.0是用來(lái)保留做MySQL的集群版本,因此采用了8.0的版本號。
MySQL 8.0的預期發(fā)布日期
根據MySQL的策略“一個(gè)新的【一般】版本發(fā)布的周期是18-24個(gè)月”, MySQL并沒(méi)有承諾MySQL 8.0的發(fā)布日期。最近一次MySQL 5.7的發(fā)布是2015年的10月21日,所以MySQL 8.0的正式版本發(fā)行可能在2017年10月。
MySQL 8.0標準化Unicode之路
默認支持Unicode可以說(shuō)是MySql 8.0最大的改變之一。 長(cháng)期以來(lái),MySQL一直存在著(zhù)對Unicode的很多沒(méi)能解決的問(wèn)題。 所以,對MySQL 8.0來(lái)說(shuō),一個(gè)長(cháng)期的計劃是盡可能多地修復那些持續的Unicode問(wèn)題。
MySQL 8.0不再將latin1設為默認的編碼,以防止新用戶(hù)使用了這個(gè)有問(wèn)題的遺留選項?,F在推薦utf8mb4作為MySQL 8.0的默認字符集設置,其目的是比現在不在推薦的utf8mb3字符設置更快,同時(shí)也支持更靈活的排序并區分大小寫(xiě)。
增強的Unicode不但支持非西方的字符集合也支持目前日益發(fā)展的emoji表情。
MySQL 8.0支持窗口函數
很多SQL語(yǔ)言標準的實(shí)現(如Oracle,譯者注)都支持窗口函數,它是能實(shí)現跨多行聚合計算的功能,并仍然允許從查詢(xún)中訪(fǎng)問(wèn)到單獨的行。在以前的MySQL版本中,不使用窗口函數是可以實(shí)現的,但是很麻煩而且速度慢。為了克服這個(gè)缺陷,MySQL 8.0通過(guò)標準的SQL關(guān)鍵字OVER來(lái)實(shí)現窗口函數的功能,有點(diǎn)象其競爭對手PostgreSQL的實(shí)現方法。
同樣另一個(gè)功能是遞歸公用表表達式,它能讓你針對子查詢(xún)進(jìn)行遞歸操作,而無(wú)需使用游標或其他有損性能的解決方法。
MySQL 8.0更好支持文檔型數據庫和JSON
MySQL 5.7支持JSON,這讓MySQL 能使用原生JSON和NoSQL數據庫競爭。MySQL 8.0 擴展了對JSON的支持,并且性能更加好,增加了從JSON查詢(xún)中返回范圍的功能(就象SQL語(yǔ)句”top n”的功能),也增加了新的聚合函數能讓在同一個(gè)查詢(xún)語(yǔ)句中,能結合MySQL原生的結構化數據和JSON的半結構化數據。
與JSON相關(guān)的另一項改進(jìn)包括MySQL的文檔存儲。 對MySQL文檔存儲的讀取和寫(xiě)入在事務(wù)上是一致的,允許對JSON數據進(jìn)行更改的回滾操作。文檔數據以開(kāi)放的、用于地理空間數據的GeoJSON格式存儲,并且能被索引,因此可以進(jìn)行領(lǐng)接方式的搜索。
MySQL 8.0的其他關(guān)鍵特性
其他MySQL 8.0計劃更新的特性包括:
在鎖定行方面增加了更多選項,如SKIP LOCKED和NOWAIT兩個(gè)選項。其中,
SKIP LOCKED允許在操作中不鎖定那些需要忽略的行;NOWAIT則在遇到行的鎖定的時(shí)候馬上拋出錯誤。
MySQL能根據可用內存的總量去伸縮擴展,以更好利用虛擬機的部署。
新增“隱藏索引”的特性,這樣索引可以在查詢(xún)優(yōu)化器中變?yōu)椴豢梢?jiàn)。索引在標記為不可用后,和表的數據更改同步,但是優(yōu)化器不會(huì )使用它們。對于使用隱藏索引的建議,是當不決定某個(gè)索引是否需要保留的時(shí)候,可以使用。