10 个开发者必知的 MySQL 8.0 新功能

TOP 10

  1. MySQL 文档存储
  2. 默认 utf8mb4 编码
  3. JSON 增强
  4. CTEs(译者注:Common Table Expresssions 公共表格表达式)
  5. 窗口函数
  6. 降序索引
  7. 更好的优化器消费模型
  8. MySQL 服务器组件
  9. GIS(译者注:Geographic Information System 地理信息系统) 提升
  10. InnoDB 引擎的 NO WAIT 和 SKIP \ LOCKED 选项

1. MySQL 文档存储

这是 MySQL 8.0 中最受期待和最受欢迎的特性 ... 同时他非常容易理解。

我对 MySQL 文档存储非常兴奋,我在全球各地展示他快一年的时间,并收到了很多好的反馈。 为什么 MySQL DS 如此优秀? 因为使用一种解决方案你可以处理 SQL 和 NoSQL。你也可以将两种语言的优势结合起来。 你可以对相同数据执行 CRUD 命令,同时你也可以在 SQL 中执行如连接多个表及 and/or 集合这种更复杂的查询。

同时后端是众所周知强大的 InnoDB 引擎, MySQL 文档存储引擎完全符合 ACID 标准。 因为他都在 MySQL 内部,所以你可以从你熟悉的内容中收益,亦可以将其转换到文档存储: replication, performance_schema, ...

2. 默认字符集为 utf8mb4

使用 MySQL 8.0, 我们当然关注现代 Web 应用... 这是指移动端! 当我们提到手机端, 也是表情符号和大量的需要共存的字符集和归类。

这就是为什么我们决定将默认的字符集从 latin-1 转为 utf8mb4。 MySQL支持最新的 Unicode 9.0 基于 DUCET 的新分类, 重音和大小写敏感的归类,日语,俄语,...

3. JSON 强化

MySQL 带来了一些新的 JSON 相关变更:

  • 新增 ->> 表达式,作用等于 JSON_UNQUOTE(JSON_EXTRACT())
  • 新的聚合函数 JSON_ARRAYAGG()JSON_OBJECTAGG()
  • 新增 JSON_PRETTY()
  • 新的 JSON 工具函数如 JSON_STORAGE_SIZE(), JSON_STORAGE_FREE()

MySQL 8.0 中 JSON 最重要的优化之一,是提供了一个 JSON_TABLE() 函数。此函数接受 JSON 格式的数据,然后将其转化为关系型数据表。字段和数据的格式都可以被指定。你也可以对 JSON_TABLE() 以后的数据使用正常的 SQL 查询,如 JOINS, 聚合查询等, ... 你可以查阅 @stoker 的博文 ,当然你也可以阅读 官方文档

需要注意的是,这不仅仅影响到开发者的使用,MySQL 的执行性能也会受到影响。在老系统中,更新 JSON 时系统会删除老数据并写入新的数据,在新系统中,如果你要更新 JSON 数据里的某个字段,正确的做法是直接对 JSON 里的某个字段进行更新,这样执行效率更佳,并且数据库主从复制(Replication)性能也会受益。

4. 公共表格表达式 (CTEs)

MySQL 8.0 新增了 CTEs 功能(译者注:Common Table Expresssions 公共表格表达式)。CTE 是一个命名的临时结果集,仅在单个 SQL 语句的执行范围内存在,可以是自引用,也可以在同一查询中多次引用。

5. 统计分析方法

针对查询中的每一行,一个统计分析方法使用该行关联的行执行计算。 这就像 GROUP BY 方法但他是保留行而不是折叠他们。

以下是 MySQL 8.0.4 当前实现的统计分析方法列表:

名称 描述
CUME_DIST() 累计分配值
DENSE_RANK() 当前行在分区的排名, 没有间隔
FIRST_VALUE() 窗口框架第一行的参数值
LAG() 分区中指定行落后于当前行的参数值
LAST_VALUE() 窗口框架第一行的参数值
LEAD() 分区中引导当前行的参数值
NTH_VALUE() 从第N行窗口框架的参数值
NTILE() 分区中当前行的桶号
PERCENT_RANK() 百分比等级值
RANK() 当前行在分区中的排名,含间隔
ROW_NUMBER() 其分区中的当前行数

6. 降序索引

在 MySQL 8.0 之前, 当在索引定义中使用 DESC 时该标志将被忽略。 现在不再是这样了! 现在键值按降序存储。以前, 索引可能被按相反顺序扫描,但性能会受到影响。可以按顺序扫描倒序索引,这将更高效。

7. 更好的优化器开销模型

新的优化器开销模型(Optimizer Cost Model)现在会计算内存缓存数据和硬盘数据。推荐阅读 Øystein 的博客文章.

8. MySQL 服务器模块

你可以利用此特性来扩展 MySQL 服务器的功能,这将会比插件更加容易开发和维护,推荐阅读 官方文档

9. GIS 的提升

MySQL 8.0 对 GIS(译者注:Geographic Information System 地理信息系统) 的支持有非常高的提升,功能上直追 PostgreSQL。

一些例子:

  • 坐标轴将拥有单位
  • 地理坐标系统
  • 坐标轴将不会偏移
  • 坐标轴支持排序
  • 坐标轴支持方向相关性

10. InnoDB 引擎 NO WAIT 与 SKIP LOCKED

MySQL 8.0 的 InnoDB 引擎现在可以更好的处理热行争抢。 InnoDB 支持 NOWAITSKIP\ LOCKED 选项与 SELECT ... FOR\ SHARESELECT ... FOR\ UPDATE 锁定读取语句。 NOWAIT 会在请求行被其他事务锁定的情况下立即返回语句。 SKIP LOCKED 从结果集中删除被锁定的行。 参见 使用 NOWAIT 和 SKIP LOCKED 锁定并发读取.

当然好的 MySQL 8.0 特性列表不会在这里结束, 例如 支持正则表达式 也是一个刚刚出现在 [8.0.4] 版本中的有趣的特性 (https://mysqlserverteam.com/the-mysql-8-0-4-release-candidate-is-available/)。 新的 SQL GROUPING() 功能, IPV6 和 UUID 操作新业务,更多优化器提示

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容