mate30pro 优化 开发者选项_10 个开发者必知的 MySQL 8.0 新功能
文章转发自专业的Laravel开发者社区,原始链接:https://learnku.com/laravel/t/10243/mysql-8-new-features-required-by-10-developers
下面将以 MySQL 社区的优先级从高到低来展示这些功能:
TOP 10
- MySQL 文档存储
- 默认 utf8mb4 编码
- JSON 增强
- CTEs(译者注:Common Table Expresssions 公共表格表达式)
- 窗口函数
- 降序索引
- 更好的优化器消费模型
- MySQL 服务器组件
- GIS(译者注:Geographic Information System 地理信息系统) 提升
- 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 支持 NOWAIT
和 SKIP LOCKED
选项与 SELECT ... FOR SHARE
和 SELECT ... 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 新功能相关推荐
- Android - 开发者选项中的一些必知必懂必会
唠叨 开发者选项中有很多功能,到作为一个开发者,常用常见的就是 USB 调试了.但熟不知,里面还有很几个有意思的东西. 1. 不锁定屏幕 在开发中进行 USB 调试,开启后,不会熄灭屏幕,但屏幕亮度会 ...
- 提升性能的开发者选项,华为手机必开4种设置,让手机飞起来
提升性能的"开发者选项",华为手机必开4种设置,让手机飞起来 华为手机的用户们,你们是否了解手机中的"开发者选项"呢?我们调试好手机中的"开发者选项& ...
- Android Studio 4.0 新功能与优化
1.前言 Android Studio又更新了,每次重大更新都给我们的生产力提升了一个台阶,当然也会带来神奇的bug,墙裂提醒各位小伙伴升级请慎重!!! [真香警告]Android Studio下载链 ...
- 开发者必看|Android 8.0 新特性及开发指南
背景介绍 谷歌2017I/O开发者大会今年将于5月17-19日在美国加州举办.大会将跟往年一样发布最新的 Android 系统,今年为 Android 8.0.谷歌在今年3 月21日发布 Androi ...
- 最新技术资讯,你必须知道的Python 3.9新功能
Python 3.9,来了! 过去一年,来自世界各地的开发者们一直在致力于Python3.8的改进.Python 3.9 beta版本已经存在了一段时间,第一个正式版本于2020年10月5日发布. 每 ...
- 程序猿必知的MySQL闪回原理
详细参见https://blog.csdn.net/qq_32506555/article/details/54426440 DBA或开发人员,有时会误删或者误更新数据,如果是线上环境并且影响较大,就 ...
- mysql 8.0 新特性 统计直方图 优化执行计划SQL查询
| 概览 MySQL8.0实现了统计直方图.利用直方图,用户可以对一张表的一列做数据分布的统计,特别是针对没有索引的字段.这可以帮助查询优化器找到更优的执行计划.统计直方图的主要使用场景是用来计算字 ...
- 小米android8.0新功能,性能大优化:小米A1已向所有用户推Android 8.0更新
近日,小米方面发布消息表示,已经正式向所有的小米A1手机用户推送Android 8.0系统更新,用户在检查更新当中就可以直接OTA升级,与其一起推送的还有一月的安全补丁. 此次的更新推送不仅修复了此前 ...
- 小米android8.0新功能,性能大优化:小米A1已向所有用户推Android 8.0更新!
原标题:性能大优化:小米A1已向所有用户推Android 8.0更新! 近日,小米方面发布消息表示,已经正式向所有的小米A1手机用户推送Android 8.0系统更新,用户在检查更新当中就可以直接OT ...
最新文章
- bash问题引起的centos系统不能启动
- opencv 读写XML YML
- loj #2305. 「NOI2017」游戏
- 99%的人都不知道的鸡兔同笼解法!
- bzoj 5093 [Lydsy1711月赛]图的价值——第二类斯特林数
- EVE-NG之dynamips镜像重新计算idle值
- java 图形编辑器_SVGX矢量化图形编辑器,100%JAVA实现的矢量化图形编辑器
- 经传主力控盘指标公式 清晰的主力控盘程度详解 通达信选股指标
- 幸福家庭杂志幸福家庭杂志社幸福家庭教育部2022年第1期目录
- mybatis中显示Type interface com.javacto.dao.UserMapper is not known to the MapperRegistry.
- 从来不敷面膜的人_女人一旦过了40岁,敷面膜要记住“3不要”,否则还不如不敷!...
- 用python的tkinter做游戏(八)—— 实现图片在tkinter中自适应大小(自动匹配窗口)
- 2021年深圳市产业发展与创新人才奖申报条件及材料
- 类和对象的定义和关系
- Debug签名时候数据正常正式签名的时候数据不正常,不显示,或者数据错乱问题
- iOS客户端开发与Web前端开发
- 并不对劲的方格取数问题
- Mathcad求解一元二次方程
- linux中yum provide,Liunx 安装YUM有没有详细的教程。
- 去掉迅雷导致桌面的右下角不时弹出广告
热门文章
- SAP CRM customer classfication debug
- 如何给SAP Cloud Platform的CloudFoundry环境里的subaccount添加quota
- CRM webClient UI搜索参数里max hit是怎么被后台服务器处理的
- 可以通过执行报表RSVMCRT_MINI_DEBUGGER 查看CRM IPC中定价计算公式的相关源代码
- SAP CM: cl_crm_oi_docx_transform_rt=indicate_tree
- 如何手动删除一个business document和pricing document的relationship
- 在ubuntun虚拟机里安装goLang语言编程环境
- oracle adg切换原理,oracle11g ADG主备切换
- Controller中目标场景及手工场景
- mysqlbinlog查看日志_一个分布式 MySQL Binlog 存储系统的架构设计