文章转发自专业的Laravel开发者社区,原始链接:https://learnku.com/laravel/t/10243/mysql-8-new-features-required-by-10-developers

下面将以 MySQL 社区的优先级从高到低来展示这些功能:

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 特性列表不会在这里结束, 例如 ="https://dev.mysql.com/doc/refman/8.0/en/regexp.html">支持正则表达式 也是一个刚刚出现在 [8.0.4] 版本中的有趣的特性 (https://mysqlserverteam.com/the-mysql-8-0-4-release-candidate-is-available/)。 新的 SQL GROUPING() 功能, IPV6 和 UUID 操作新业务,更多优化器提示...

我希望这给你一个很好的概述,是什么样的请求在驱动 MySQL 的创新。下一篇文章将介绍应该使得开发者满意的 MySQL 8.0 特性 ?

mate30pro 优化 开发者选项_10 个开发者必知的 MySQL 8.0 新功能相关推荐

  1. Android - 开发者选项中的一些必知必懂必会

    唠叨 开发者选项中有很多功能,到作为一个开发者,常用常见的就是 USB 调试了.但熟不知,里面还有很几个有意思的东西. 1. 不锁定屏幕 在开发中进行 USB 调试,开启后,不会熄灭屏幕,但屏幕亮度会 ...

  2. 提升性能的开发者选项,华为手机必开4种设置,让手机飞起来

    提升性能的"开发者选项",华为手机必开4种设置,让手机飞起来 华为手机的用户们,你们是否了解手机中的"开发者选项"呢?我们调试好手机中的"开发者选项& ...

  3. Android Studio 4.0 新功能与优化

    1.前言 Android Studio又更新了,每次重大更新都给我们的生产力提升了一个台阶,当然也会带来神奇的bug,墙裂提醒各位小伙伴升级请慎重!!! [真香警告]Android Studio下载链 ...

  4. 开发者必看|Android 8.0 新特性及开发指南

    背景介绍 谷歌2017I/O开发者大会今年将于5月17-19日在美国加州举办.大会将跟往年一样发布最新的 Android 系统,今年为 Android 8.0.谷歌在今年3 月21日发布 Androi ...

  5. 最新技术资讯,你必须知道的Python 3.9新功能

    Python 3.9,来了! 过去一年,来自世界各地的开发者们一直在致力于Python3.8的改进.Python 3.9 beta版本已经存在了一段时间,第一个正式版本于2020年10月5日发布. 每 ...

  6. 程序猿必知的MySQL闪回原理

    详细参见https://blog.csdn.net/qq_32506555/article/details/54426440 DBA或开发人员,有时会误删或者误更新数据,如果是线上环境并且影响较大,就 ...

  7. mysql 8.0 新特性 统计直方图 优化执行计划SQL查询

    |  概览 MySQL8.0实现了统计直方图.利用直方图,用户可以对一张表的一列做数据分布的统计,特别是针对没有索引的字段.这可以帮助查询优化器找到更优的执行计划.统计直方图的主要使用场景是用来计算字 ...

  8. 小米android8.0新功能,性能大优化:小米A1已向所有用户推Android 8.0更新

    近日,小米方面发布消息表示,已经正式向所有的小米A1手机用户推送Android 8.0系统更新,用户在检查更新当中就可以直接OTA升级,与其一起推送的还有一月的安全补丁. 此次的更新推送不仅修复了此前 ...

  9. 小米android8.0新功能,性能大优化:小米A1已向所有用户推Android 8.0更新!

    原标题:性能大优化:小米A1已向所有用户推Android 8.0更新! 近日,小米方面发布消息表示,已经正式向所有的小米A1手机用户推送Android 8.0系统更新,用户在检查更新当中就可以直接OT ...

最新文章

  1. bash问题引起的centos系统不能启动
  2. opencv 读写XML YML
  3. loj #2305. 「NOI2017」游戏
  4. 99%的人都不知道的鸡兔同笼解法!
  5. bzoj 5093 [Lydsy1711月赛]图的价值——第二类斯特林数
  6. EVE-NG之dynamips镜像重新计算idle值
  7. java 图形编辑器_SVGX矢量化图形编辑器,100%JAVA实现的矢量化图形编辑器
  8. 经传主力控盘指标公式 清晰的主力控盘程度详解 通达信选股指标
  9. 幸福家庭杂志幸福家庭杂志社幸福家庭教育部2022年第1期目录
  10. mybatis中显示Type interface com.javacto.dao.UserMapper is not known to the MapperRegistry.
  11. 从来不敷面膜的人_女人一旦过了40岁,敷面膜要记住“3不要”,否则还不如不敷!...
  12. 用python的tkinter做游戏(八)—— 实现图片在tkinter中自适应大小(自动匹配窗口)
  13. 2021年深圳市产业发展与创新人才奖申报条件及材料
  14. 类和对象的定义和关系
  15. Debug签名时候数据正常正式签名的时候数据不正常,不显示,或者数据错乱问题
  16. iOS客户端开发与Web前端开发
  17. 并不对劲的方格取数问题
  18. Mathcad求解一元二次方程
  19. linux中yum provide,Liunx 安装YUM有没有详细的教程。
  20. 去掉迅雷导致桌面的右下角不时弹出广告

热门文章

  1. SAP CRM customer classfication debug
  2. 如何给SAP Cloud Platform的CloudFoundry环境里的subaccount添加quota
  3. CRM webClient UI搜索参数里max hit是怎么被后台服务器处理的
  4. 可以通过执行报表RSVMCRT_MINI_DEBUGGER 查看CRM IPC中定价计算公式的相关源代码
  5. SAP CM: cl_crm_oi_docx_transform_rt=indicate_tree
  6. 如何手动删除一个business document和pricing document的relationship
  7. 在ubuntun虚拟机里安装goLang语言编程环境
  8. oracle adg切换原理,oracle11g ADG主备切换
  9. Controller中目标场景及手工场景
  10. mysqlbinlog查看日志_一个分布式 MySQL Binlog 存储系统的架构设计