MySQL 8.0中新增的功能(五)

2024-01-09

改进哈希连接性能

MySQL 8.0.23重新实现了用于哈希连接的哈希表,从而改进了哈希连接的性能。这项工作包括修复了一个问题(Bug#31516149,Bug#99933),在这个问题中,用于连接缓冲区(join_buffer_size)的分配内存实际上只能使用大约2/3。
新的哈希表通常比旧的更快,并且在对齐、键/值和存在许多相同键的场景中使用更少的内存。此外,当哈希表的大小增加时,服务器现在可以释放旧的内存。

公共表达式

MySQL现在支持通用表达式(Common Table Expressions,CTEs),包括非递归和递归类型。通过允许在SELECT语句和某些其他语句之前使用WITH子句,通用表达式可以使用命名的临时结果集。

通用表达式允许在查询中使用具名临时结果集,这在MySQL 8.0.19及以上版本中开始支持。

对于递归通用表达式(CTE),从MySQL 8.0.19开始,支持在递归SELECT一部分中使用LIMIT子句,还支持LIMIT的OFFSET。

窗口函数

MySQL现在支持窗口函数(window functions),可以针对查询结果中的每一行执行基于相关行的计算。这些函数包括RANK()、LAG()和NTILE()等。此外,现在还可以将一些现有的聚合函数作为窗口函数使用,例如SUM()和AVG()等。

LATERAL衍生表

现在可以在派生表之前加上LATERAL关键字,以指定它可以引用(依赖于)同一个FROM子句中之前表的列。LATERAL衍生表使得一些在非LATERAL派生表中不能实现的SQL操作成为可能,或者需要使用效率较低的解决方法来完成。

在单表DELETE语句中使用别名

在MySQL 8.0.16及更高版本中,单表DELETE语句支持使用表别名。

正则表达式(Regular Expression)支持

先前,MySQL使用Henry Spencer的正则表达式库来支持正则表达式操作符(REGEXP,RLIKE)。正则表达式支持已经重新实现,使用了国际化组件Unicode(ICU),它提供了完整的Unicode支持,并且是多字节安全的。现在,REGEXP和RLIKE操作符是REGEXP_LIKE()函数的同义词,REGEXP_LIKE()函数按照正则表达式匹配的方式进行匹配。此外,还可使用REGEXP_INSTR()、REGEXP_REPLACE()和REGEXP_SUBSTR()函数来查找匹配位置,并进行子串替换和提取。通过regexp_stack_limit和regexp_time_limit系统变量,可以对匹配引擎的资源消耗进行控制。

内部临时表(Internal Temporary Tables)

TempTable存储引擎取代了MEMORY存储引擎,成为默认的内存中内部临时表的存储引擎。TempTable存储引擎提供了对VARCHAR和VARBINARY列的高效存储。internal_tmp_mem_storage_engine会话变量用于定义内存中内部临时表的存储引擎。可接受的值为TempTable(默认值)和MEMORY。temptable_max_ram变量定义了TempTable存储引擎在数据存储到磁盘之前可以使用的最大内存量。

日志

这些增强功能是为了改进日志记录而添加的:

- 错误日志记录被重写为使用MySQL组件架构。传统的错误日志记录使用内置组件来实现,而使用系统日志进行记录的方法则是作为可加载组件来实现的。此外,还提供了可加载的JSON日志编写器。
- 从MySQL 8.0.30开始,在InnoDB存储引擎可用之前可以隐式加载错误日志组件。加载错误日志组件的新方法会加载并启用由log_error_services变量定义的组件。
- 之前,必须首先使用INSTALL COMPONENT命令安装错误日志组件,然后在InnoDB完全可用后才能加载,因为要加载的组件列表是从mysql.components表中读取的,该表是一个InnoDB表。
- 隐式加载错误日志组件具有以下优点:
- 日志组件在启动过程中较早地加载,使得日志信息更早可用。
- 在启动过程中发生故障时,有助于避免缓冲日志信息的丢失。
- 不需要使用INSTALL COMPONENT命令加载日志组件,简化了错误日志配置。
- 为了向后兼容,仍支持使用INSTALL COMPONENT命令显式加载日志组件的方法。

备份锁

一种新型的备份锁允许在在线备份期间进行DML操作,同时防止可能导致不一致快照的操作。这种新的备份锁由LOCK INSTANCE FOR BACKUP和UNLOCK INSTANCE语法支持。使用这些语句需要具备BACKUP_ADMIN特权。

复制

MySQL复制功能已经进行了以下增强:
- MySQL复制现在支持使用紧凑的二进制格式对JSON文档的部分更新进行二进制日志记录,相比于完整的JSON文档日志记录,这样可以节省日志空间。当使用基于语句的日志记录时,将自动进行紧凑日志记录;并且可以通过将新的binlog_row_value_options系统变量设置为PARTIAL_JSON来启用。

连接管理

MySQL服务器现在允许为管理连接专门配置TCP/IP端口。这提供了一种替代方案,可以在已建立最大连接数的情况下,用于普通连接的网络接口上仍然允许单个管理连接。

MySQL现在提供了更多对压缩使用的控制,以最小化发送到服务器的字节数。以前,一个给定的连接要么是未压缩的,要么使用zlib压缩算法。现在,还可以使用zstd算法,并为zstd连接选择压缩级别。允许配置服务器端的压缩算法,以及源/副本复制或组复制中客户端程序和参与的服务器连接发起方的连接的压缩算法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 8.0中新增的功能(五) 的相关文章

随机推荐

  • 分辨公网IP和内网IP的方法

    公网IP一般就是对外的访问地址 内网IP就是对内的访问地址 两者的使用范围是不一样的 那如果区分客户网络的IP地址是公网IP地址还是内网IP地址呢 公网IP的地址范围是很广泛的 我们可以先了解下内网IP 因为内网IP的地址段相对是局限的 一
  • Hive操作命令上手手册

    内容来自于 大数据Hive离线计算开发实战 Hive原理 Hive是一个基于Hadoop的数据仓库和分析系统 用于管理和查询大型数据集 以下是Hive的原理 数据仓库 Hive将结构化的数据文件映射成一张表 并提供类SQL查询功能 用户可以
  • InfluxDB学习笔记

    本博客是我在学习InfluxDB的时候 记录的笔记 大家可以看看参考学些 简介 简述 InfluxDB是一个由InfluxData开发的开源时序型数据 它由Go写成 着力于高性能查询与存储时序型数据 InfluxDB被广泛应用于存储系统的监
  • 高翔博士Faster-LIO论文和算法解析

    说明 题目 Faster LIO 快速激光IMU里程计 参考链接 Faster LIO 快速激光IMU里程计 iVox Faster Lio 智行者高博团队开源的增量式稀疏体素结构 Faster Lio是高翔博士在Fast系列的新作 对标基
  • 在JavaScript面向对象编程中使用继承

    面向对象编程是一种重要的编程范式 它通过将数据和操作封装在对象中 实现了代码的模块化和复用 在JavaScript中 我们可以使用继承来实现对象之间的关系 从而使代码更加灵活和可扩展 那么 让我们深入探讨在JavaScript中如何使用继承
  • 安达发APS|PDM产品数据管理可以帮助企业实现的价值

    在实际运用中 APS系统的PDM产品数据管理功能可以帮助企业实现以下价值 1 提高产品设计和制造的效率 通过对产品结构和文档的统一管理 可以实现对产品信息的快速查询和检索 提高产品设计和制造的效率 2 保证产品数据的准确性和一致性 通过对版
  • excel 按照姓名日期年份分组求和

    excel 需要按照 姓名 日期中年份分组求和 目前想到 sumifs函数 大概需求如下 表格数据大概如下 A B C 姓名 日期 金额 a 2022 2 1 542 a 2023 4 5 154 b
  • 基于多目标粒子群算法的三个目标的支配解求解,基于多目标粒子群的帕累托前沿求解,基于多目标粒子群的三目标求解

    目录 摘要 测试函数shubert 粒子群算法的原理 粒子群算法的主要参数 粒子群算法原理 基于多目标粒子群算法的支配解求解 基于多目标粒子群的帕累托前沿求解 基于多目标粒子群的三目标求解 代码 结果分析 展望 代码下载 基于多目标粒子群算
  • 线上企业展厅:企业发展新利器,轻松实现线上企业展示

    引言 在当今数字化时代 线上企业展厅已经成为企业展示品牌形象 推广产品的重要手段 它不仅可以帮助企业拓宽市场 提升品牌知名度 还能为企业带来更多的商业机会 那么线上企业展厅有什么优势 如何搭建成功的线上企业展厅 一 线上企业展厅的优势 1
  • 题解 | #链表中的节点每k个一组翻转#C++暴力遍历解法

    求大家投下我们腾讯吧 发的一堆sp被鸽了 大数据面试题 Hive 华为14A还是保研华中科技大学 求大家投下我们腾讯吧 发的一堆sp被鸽了 终极 2024校招八股文 MySQL索引 第一篇 招芯片验证实习生 碰到渣导悲哀3年 给秋招画个句号
  • Sage运行pwntools库脚本异常解决:OSError: Int or String expected

    需要和Oracle交互的密码学脚本一般都需要借助pwn库的帮助 今天切换了python版本后 出现了一个异常 OSError Int or String expected 详细异常见文章 查阅一下源码后简单的解决了这个问题 在此分享一下 文
  • 解锁数据之门Roxlabs全球住宅IP赋能海外爬虫与学术研究

    11 20云账房测试一面凉经 华为开奖啦 关于邮储的一些情况 维信金科一面 二面 hr面 我的导师太好了 上海维信金科 技术面试一 Java后端开发岗记录贴 维信金科正式批面经 软件技术领域就业大纲 1 公司分类 你裁掉这个应届生用了多长时
  • TypeScript 和 jsdom 库创建爬虫程序示例

    TypeScript 简介 TypeScript 是一种由微软开发的自由和开源的编程语言 它是 JavaScript 的一个超集 可以编译生成纯 JavaScript 代码 TypeScript 增加了可选的静态类型和针对对象的编程功能 使
  • 在职状态下继续学习的心得体会

    本来平时记录的都是一些技术点的学习和使用 今天打算记录一下学习方法 当然不一定适合所有人 因人而异 仅供参考 学习这件事 对于IT行业来说 真的是活到老学到老 技术的更新迭代速度非常快 而且总是有那么一些公司特别的卷 没办法 改变不了外因
  • 模型训练 -- 数据集的获取(如何筛选想要数据)

    目录 一 前言 二 数据平台 三 数据处理 1 MaixHub平台使用 2 ZIP格式整理与上传平台 3 数据处理 使用平台删除标注 四 参考 一 前言 对于图像数据集的获取 一直是一个麻烦点 自己不想去标注数据 太繁琐了 所以 我分享出一
  • 在线智能抠图软件有哪些?证件照背景颜色更换不求人

    2024年上半年全国计算机等级考试 NCRE 报名开始啦 不出意外 这次报名仍然是需要提交证件照 具体要求如下 本人近期正面免冠 白色背景 彩色证件照 不得使用生活照 美颜照 最小像素高宽为192x144 最小成像区高宽为48mmx33mm
  • 大模型笔记【2】 LLM in Flash

    Apple最近发表了一篇文章 可以在iphone MAC 上运行大模型 LLM in a flash Efficient Large Language Model Inference with Limited Memory 主要解决的问题是
  • ros2 基础学习 15- URDF:机器人建模方法

    URDF 机器人建模方法 ROS是机器人操作系统 当然要给机器人使用啦 不过在使用之前 还得让ROS认识下我们使用的机器人 如何把一个机器人介绍给ROS呢 为此 ROS专门提供了一种机器人建模方法 URDF Unified Robot De
  • 解锁数据之门Roxlabs全球住宅IP赋能海外爬虫与学术研究

    11 20云账房测试一面凉经 华为开奖啦 关于邮储的一些情况 维信金科一面 二面 hr面 我的导师太好了 上海维信金科 技术面试一 Java后端开发岗记录贴 维信金科正式批面经 软件技术领域就业大纲 1 公司分类 你裁掉这个应届生用了多长时
  • MySQL 8.0中新增的功能(五)

    改进哈希连接性能 MySQL 8 0 23重新实现了用于哈希连接的哈希表 从而改进了哈希连接的性能 这项工作包括修复了一个问题 Bug 31516149 Bug 99933 在这个问题中 用于连接缓冲区 join buffer size 的