10 個開發(fā)者必知的 MySQL 8.0 新功能

TOP 10

  1. MySQL 文檔存儲
  2. 默認(rèn) utf8mb4 編碼
  3. JSON 增強(qiáng)
  4. CTEs(譯者注:Common Table Expresssions 公共表格表達(dá)式)
  5. 窗口函數(shù)
  6. 降序索引
  7. 更好的優(yōu)化器消費(fèi)模型
  8. MySQL 服務(wù)器組件
  9. GIS(譯者注:Geographic Information System 地理信息系統(tǒng)) 提升
  10. InnoDB 引擎的 NO WAIT 和 SKIP \ LOCKED 選項(xiàng)

1. MySQL 文檔存儲

這是 MySQL 8.0 中最受期待和最受歡迎的特性 ... 同時他非常容易理解实牡。

我對 MySQL 文檔存儲非常興奮,我在全球各地展示他快一年的時間况毅,并收到了很多好的反饋恤批。 為什么 MySQL DS 如此優(yōu)秀异吻? 因?yàn)槭褂靡环N解決方案你可以處理 SQL 和 NoSQL。你也可以將兩種語言的優(yōu)勢結(jié)合起來喜庞。 你可以對相同數(shù)據(jù)執(zhí)行 CRUD 命令涧黄,同時你也可以在 SQL 中執(zhí)行如連接多個表及 and/or 集合這種更復(fù)雜的查詢。

同時后端是眾所周知強(qiáng)大的 InnoDB 引擎赋荆, MySQL 文檔存儲引擎完全符合 ACID 標(biāo)準(zhǔn)。 因?yàn)樗荚?MySQL 內(nèi)部懊昨,所以你可以從你熟悉的內(nèi)容中收益窄潭,亦可以將其轉(zhuǎn)換到文檔存儲: replication, performance_schema, ...

2. 默認(rèn)字符集為 utf8mb4

使用 MySQL 8.0, 我們當(dāng)然關(guān)注現(xiàn)代 Web 應(yīng)用... 這是指移動端酵颁! 當(dāng)我們提到手機(jī)端嫉你, 也是表情符號和大量的需要共存的字符集和歸類。

這就是為什么我們決定將默認(rèn)的字符集從 latin-1 轉(zhuǎn)為 utf8mb4躏惋。 MySQL支持最新的 Unicode 9.0 基于 DUCET 的新分類幽污, 重音和大小寫敏感的歸類,日語簿姨,俄語距误,...

3. JSON 強(qiáng)化

MySQL 帶來了一些新的 JSON 相關(guān)變更:

  • 新增 ->> 表達(dá)式簸搞,作用等于 JSON_UNQUOTE(JSON_EXTRACT())
  • 新的聚合函數(shù) JSON_ARRAYAGG()JSON_OBJECTAGG()
  • 新增 JSON_PRETTY()
  • 新的 JSON 工具函數(shù)如 JSON_STORAGE_SIZE(), JSON_STORAGE_FREE()

MySQL 8.0 中 JSON 最重要的優(yōu)化之一,是提供了一個 JSON_TABLE() 函數(shù)准潭。此函數(shù)接受 JSON 格式的數(shù)據(jù)趁俊,然后將其轉(zhuǎn)化為關(guān)系型數(shù)據(jù)表。字段和數(shù)據(jù)的格式都可以被指定刑然。你也可以對 JSON_TABLE() 以后的數(shù)據(jù)使用正常的 SQL 查詢寺擂,如 JOINS, 聚合查詢等, ... 你可以查閱 @stoker 的博文 ,當(dāng)然你也可以閱讀 官方文檔 泼掠。

需要注意的是怔软,這不僅僅影響到開發(fā)者的使用,MySQL 的執(zhí)行性能也會受到影響择镇。在老系統(tǒng)中挡逼,更新 JSON 時系統(tǒng)會刪除老數(shù)據(jù)并寫入新的數(shù)據(jù),在新系統(tǒng)中沐鼠,如果你要更新 JSON 數(shù)據(jù)里的某個字段挚瘟,正確的做法是直接對 JSON 里的某個字段進(jìn)行更新,這樣執(zhí)行效率更佳饲梭,并且數(shù)據(jù)庫主從復(fù)制(Replication)性能也會受益乘盖。

4. 公共表格表達(dá)式 (CTEs)

MySQL 8.0 新增了 CTEs 功能(譯者注:Common Table Expresssions 公共表格表達(dá)式)。CTE 是一個命名的臨時結(jié)果集憔涉,僅在單個 SQL 語句的執(zhí)行范圍內(nèi)存在订框,可以是自引用,也可以在同一查詢中多次引用兜叨。

5. 統(tǒng)計分析方法

針對查詢中的每一行穿扳,一個統(tǒng)計分析方法使用該行關(guān)聯(lián)的行執(zhí)行計算。 這就像 GROUP BY 方法但他是保留行而不是折疊他們国旷。

以下是 MySQL 8.0.4 當(dāng)前實(shí)現(xiàn)的統(tǒng)計分析方法列表:

名稱 描述
CUME_DIST() 累計分配值
DENSE_RANK() 當(dāng)前行在分區(qū)的排名矛物, 沒有間隔
FIRST_VALUE() 窗口框架第一行的參數(shù)值
LAG() 分區(qū)中指定行落后于當(dāng)前行的參數(shù)值
LAST_VALUE() 窗口框架第一行的參數(shù)值
LEAD() 分區(qū)中引導(dǎo)當(dāng)前行的參數(shù)值
NTH_VALUE() 從第N行窗口框架的參數(shù)值
NTILE() 分區(qū)中當(dāng)前行的桶號
PERCENT_RANK() 百分比等級值
RANK() 當(dāng)前行在分區(qū)中的排名,含間隔
ROW_NUMBER() 其分區(qū)中的當(dāng)前行數(shù)

6. 降序索引

在 MySQL 8.0 之前跪但, 當(dāng)在索引定義中使用 DESC 時該標(biāo)志將被忽略履羞。 現(xiàn)在不再是這樣了! 現(xiàn)在鍵值按降序存儲屡久。以前忆首, 索引可能被按相反順序掃描,但性能會受到影響被环〔诩埃可以按順序掃描倒序索引,這將更高效筛欢。

7. 更好的優(yōu)化器開銷模型

新的優(yōu)化器開銷模型(Optimizer Cost Model)現(xiàn)在會計算內(nèi)存緩存數(shù)據(jù)和硬盤數(shù)據(jù)浸锨。推薦閱讀 ?ystein 的博客文章.

8. MySQL 服務(wù)器模塊

你可以利用此特性來擴(kuò)展 MySQL 服務(wù)器的功能唇聘,這將會比插件更加容易開發(fā)和維護(hù),推薦閱讀 官方文檔揣钦。

9. GIS 的提升

MySQL 8.0 對 GIS(譯者注:Geographic Information System 地理信息系統(tǒng)) 的支持有非常高的提升雳灾,功能上直追 PostgreSQL。

一些例子:

  • 坐標(biāo)軸將擁有單位
  • 地理坐標(biāo)系統(tǒng)
  • 坐標(biāo)軸將不會偏移
  • 坐標(biāo)軸支持排序
  • 坐標(biāo)軸支持方向相關(guān)性

10. InnoDB 引擎 NO WAIT 與 SKIP LOCKED

MySQL 8.0 的 InnoDB 引擎現(xiàn)在可以更好的處理熱行爭搶冯凹。 InnoDB 支持 NOWAITSKIP\ LOCKED 選項(xiàng)與 SELECT ... FOR\ SHARESELECT ... FOR\ UPDATE 鎖定讀取語句谎亩。 NOWAIT 會在請求行被其他事務(wù)鎖定的情況下立即返回語句。 SKIP LOCKED 從結(jié)果集中刪除被鎖定的行宇姚。 參見 使用 NOWAIT 和 SKIP LOCKED 鎖定并發(fā)讀取.

當(dāng)然好的 MySQL 8.0 特性列表不會在這里結(jié)束匈庭, 例如 支持正則表達(dá)式 也是一個剛剛出現(xiàn)在 [8.0.4] 版本中的有趣的特性 (https://mysqlserverteam.com/the-mysql-8-0-4-release-candidate-is-available/)。 新的 SQL GROUPING() 功能浑劳, IPV6 和 UUID 操作新業(yè)務(wù)阱持,更多優(yōu)化器提示

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市魔熏,隨后出現(xiàn)的幾起案子衷咽,更是在濱河造成了極大的恐慌,老刑警劉巖蒜绽,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件镶骗,死亡現(xiàn)場離奇詭異,居然都是意外死亡躲雅,警方通過查閱死者的電腦和手機(jī)鼎姊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來相赁,“玉大人相寇,你說我怎么就攤上這事∨タ疲” “怎么了唤衫?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長绵脯。 經(jīng)常有香客問我战授,道長,這世上最難降的妖魔是什么桨嫁? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮份帐,結(jié)果婚禮上璃吧,老公的妹妹穿的比我還像新娘。我一直安慰自己废境,他們只是感情好畜挨,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布筒繁。 她就那樣靜靜地躺著,像睡著了一般巴元。 火紅的嫁衣襯著肌膚如雪毡咏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天逮刨,我揣著相機(jī)與錄音呕缭,去河邊找鬼。 笑死修己,一個胖子當(dāng)著我的面吹牛恢总,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播睬愤,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼片仿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了尤辱?” 一聲冷哼從身側(cè)響起砂豌,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎光督,沒想到半個月后阳距,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡可帽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了映跟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蓄拣。...
    茶點(diǎn)故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盾剩,到底是詐尸還是另有隱情雷激,我是刑警寧澤替蔬,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站屎暇,受9級特大地震影響承桥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜根悼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一凶异、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧番挺,春花似錦唠帝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至粪摘,卻和暖如春瀑晒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背徘意。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工苔悦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人椎咧。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓玖详,卻偏偏與公主長得像,于是被迫代替她去往敵國和親勤讽。 傳聞我的和親對象是個殘疾皇子蟋座,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評論 2 359

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