MySQL 8.0中新增的功能(五)

改进哈希连接性能

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连接选择压缩级别。允许配置服务器端的压缩算法,以及源/副本复制或组复制中客户端程序和参与的服务器连接发起方的连接的压缩算法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/616736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyQt5系列之核心模块与控件

一、模块介绍 1、QtCore:包含了核心的非GUI的功能。主要和时间、文件与文件夹、各种数据、流、URLs、mime类文件、进程与线程一起使用 2、QtGui:包含了窗口系统、事件处理、2D图像、基本绘画、字体和文字类 3、QtWidgets:包含了一些列创建桌面应用的UI元素 二、QtWidgets使用介…

真正的强大,原来是不动声色的

当一个人走过了绝境,他就会发现,真正的强大,原来是不动声色的。 他会停止一切自证,不再解释,话越来越少,眼神越来越坚定。 他不再模棱两可,唯唯诺诺,而是敢于断然拒绝,…

Veeam Backup12安装备份恢复ESXI7.0 U3虚拟机

介绍 只需单个平台即可保护并管理所有工作负载、应用及数据:云端、虚拟、物理、SaaS、Kubernetes、VMware、Hyper-V、Windows、Linux、UNIX、NAS、AWS、Azure、企业应用等。 个人主要用于备份ESXi上的虚拟机,可以实现单次完整备份,和定时的…

Vue3 的基本开发+新特性

Vue3 1.Vue3 1. Vue2 选项式 API vs Vue3 组合式API <script> export default {data(){return {count:0}},methods:{addCount(){this.count}} } </script> <script setup> import { ref } from vue const count ref(0) const addCount ()> count.val…

小H靶场笔记:Empire-Breakout

Empire&#xff1a;Breakout January 11, 2024 11:54 AM Tags&#xff1a;brainfuck编码&#xff1b;tar解压变更目录权限&#xff1b;Webmin&#xff1b;Usermin Owner&#xff1a;只惠摸鱼 信息收集 使用arp-scan和namp扫描C段存活主机&#xff0c;探测靶机ip&#xff1a;1…

作业--day45

定时播放 #include "mywidget.h" #include "ui_mywidget.h"MyWidget::MyWidget(QWidget *parent) :QWidget(parent),ui(new Ui::MyWidget) {ui->setupUi(this);ui->bg_lab->setPixmap(QPixmap(":/pictrue/shanChuan.jpg"));ui->bg_…

AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(六)

《诗小雅小旻》&#xff1a;“战战兢兢&#xff0c;如临深渊&#xff0c;如履薄冰。” 01.Nodejs安装与使用 什么是 Node.js&#xff1f; 什么是前端工程化&#xff1f; Node.js 为何能执行 JS&#xff1f; 查看当前使用的Node.js版本&#xff1a;node -v 执行JS&#xff1a;no…

Linux(Debina12)系统安装

在开发或学习中&#xff0c;linux系统是我们必须要熟悉的系统&#xff0c;那么今天就记录一下&#xff0c;较为稳定&#xff0c;也是小编这几年当做开发环境的发行版吧 官网地址 https://www.debian.org 下载链接 http://mirrors.163.com/debian-cd/12.4.0/amd64/iso-dvd/ …

先锋WEB燃气收费系统 Upload.aspx 文件上传漏洞复现

0x01 产品简介 先锋WEB燃气收费系统是一种先进的在线燃气收费解决方案,旨在简化和优化燃气收费的流程和管理。该系统基于Web平台,提供了一系列功能和工具,使燃气公司能够高效地进行收费、账单管理和客户服务。 0x02 漏洞概述 先锋WEB燃气收费系统/AjaxService/Upload.asp…

PHP版学校教务管理系统源码带文字安装教程

PHP版学校教务管理系统源码带文字安装教程 运行环境 服务器宝塔面板 PHP 7.0 Mysql 5.5及以上版本 Linux Centos7以上 系统介绍&#xff1a; 后台权限控制&#xff1a;支持多个管理员&#xff0c;学生管理&#xff0c;学生成绩&#xff0c;教师管理&#xff0c;文章管理&#x…

随机漫步【scatter的使用】

去掉scatter的坐标轴&#xff08;未成功版&#xff09; import matplotlib.pyplot as plt from random import choice class RandomWalk():def __init__(self,num_points 5000):self.num_points num_pointsself.x_values [0]self.y_values [0]def fill_walk(self):while l…

实现秒杀功能设计

页面 登录页面 登录成功后&#xff0c;跳转商品列表 商品列表页 加载商品信息 商品详情页 根据商品id查出商品信息返回VO&#xff08;包括rmiaoshaStatus、emainSeconds&#xff09;前端根据数据展示秒杀按钮&#xff0c;点击开始秒杀 订单详情页 秒杀页面设置 后端返回秒杀…

Pycharm close project 速度缓慢解决办法

解决Pycharm close project缓慢现象 1.问题描述 close project后需要等待很长的时间。 2.解决办法 在Help -> Find Action -> 输入 Registry -> 禁用ide.await.scope.completion 问题解决&#xff01;&#xff01;&#xff01; &#x1f603;&#x1f603;&#x…

LeetCode+ 56 - 60

合并区间 双指针算法、位运算、离散化、区间合并_小雪菜本菜的博客-CSDN博客 class Solution { public:vector<vector<int>> merge(vector<vector<int>>& a) {vector<vector<int>> res;if(a.empty()) return res;sort(a.begin(),a.en…

SSH密钥生成

ssh-keygen -t rsa -C "xxxxxxxxcom" cat ~/.ssh/id_rsa.pub

并发编程(九)

1、线程池的好处 第一&#xff1a;降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 第二&#xff1a;提高响应速度。当任务到达时&#xff0c;任务可以不需要等到线程创建就能立即执行。 第三&#xff1a;提高线程的可管理性。线程是稀缺资源&#x…

Android开发基础(四)

Android开发基础&#xff08;四&#xff09; 本篇将从Android数据存储方式去理解Android开发。 Android数据存储方式 Android提供了多种数据存储方式。 一、SharedPreferences存储 主要用于存储一些简单的配置信息&#xff0c;如登录账号密码等&#xff1b; 这种存储方式采…

C++_多态(函数指针)

多态 介绍虚函数覆盖(重写)多态源码运行结果 笔记扩充(函数指针源码) 介绍 本文主要介绍 多态这个概念 (PS:多态只是一种概念形式) 虚函数 1.成员函数前 加上关键词 virtual &#xff0c;该函数称为虚函数 (PS:static函数除外) 2.虚函数 按照实际 函数类型调用 (PS:如果基类中 …

vite+vue3创建项目及开发常见的问题

创建项目 1、npm create vitelatest 下一步&#xff0c;选vue 下一步&#xff0c;选typescript 成功&#xff1b; 2、进入项目&#xff0c;npm install 手动安装vue和vite相关的依赖包&#xff1b; 3、npm run dev 运行项目 常见问题 1、dev run dev 运行项目时&#xff0c;…

U盘启动安装win11遇到缺少计算机所需的介质驱动程序问题

一、使用U盘制作启动盘遇到问题 下载了windows原版镜像&#xff0c;验证了md5&#xff0c;确保文件没有损坏。使用ultroiso制作u盘启动盘&#xff0c;开始安装后出现下图的报错&#xff1a; 在网上搜索解决方案&#xff0c;主要有以下几种&#xff1a; 安装的时候&#xff0c…