MySQL 8.0中新增的功能(五)

这篇具有很好参考价值的文章主要介绍了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连接选择压缩级别。允许配置服务器端的压缩算法,以及源/副本复制或组复制中客户端程序和参与的服务器连接发起方的连接的压缩算法。文章来源地址https://www.toymoban.com/news/detail-815094.html

到了这里,关于MySQL 8.0中新增的功能(五)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL 8.0中移除的功能(一)

    以下项目已经过时并在MySQL 8.0中被删除。如果有替代方案,请务必更新应用程序以使用这些替代方案。 对于在MySQL 8.0中被删除的功能,如果从MySQL 5.7源复制到MySQL 8.0副本时,可能会导致语句失败,或者在源和副本上产生不同的效果。为了避免这样的问题,使用在MySQL 8.0中被删

    2024年02月01日
    浏览(35)
  • ES6中新增的Set/Map两种数据结构

    Set是一种叫做集合的数据结构,Map是一种叫做字典的数据结构🧀🧀🧀 什么是集合?什么又是字典? 集合 是由一堆无序的、相关联的、且不重复的内存结构【数学中称之为元素】组成的组合 字典 是一些元素的集合。每个元素有一个称作key的域,不同元素的key各不相同 区别

    2024年02月07日
    浏览(39)
  • php开发实战分析(1):mysql操作字段(添加、删除、修改,多数据表中新增多个字段)

    要删除MySQL数据库中的字段,您需要执行以下步骤: 连接到MySQL数据库。您可以使用MySQL的PHP扩展或PDO(PHP数据对象)来实现连接。 使用MySQL扩展连接示例: 使用PDO连接示例: 构造SQL语句删除字段。使用 ALTER TABLE 语句来删除字段。在语句中使用 DROP COLUMN 指定要删除的

    2024年02月16日
    浏览(44)
  • mysql 8.0 双密码

    当需要定期修改密码,又不想影响现有连接的情况下,怎么才能做到无缝切换呢 从 MySQL 8.0.14 开始,用户帐户允许拥有双重密码,指定为主密码和辅助密码。双密码功能使得在以下场景中无缝执行凭证更改成为可能: 一个系统有大量MySQL服务器,可能涉及到复制。 多个应用程

    2024年01月19日
    浏览(55)
  • MySQL 8.0 密码策略修改

    2024年02月15日
    浏览(40)
  • mysql 8.0版本更换用户密码

    1、首先 cmd 进入命令行  2、查询版本号 3、看一下数据库 4、使用mysql即可 5、进行查询 user、host 6、修改root的密码 7、刷新权限

    2024年02月11日
    浏览(46)
  • macOS mysql 8.0 忘记密码

    root\\\'@\\\'localhost\\\' 指定了要修改的用户为 root 用户,并且限定了该用户只能从本地主机登录。 IDENTIFIED WITH caching_sha2_password 是指定了验证插件为 caching_sha2_password,一种密码验证插件 macos上 mysql 8.0 重置密码记录

    2024年02月15日
    浏览(35)
  • MySQL 8.0 修改 Root 密码

    MySQL 是一种常见的关系型数据库,在数据库管理中 MySQL 8.0 版本也是比较常用的版本,但是 MySQL 在初次安装之后默认设置了 root 用户的密码,对于一些情况下需要修改 root 用户密码的操作,需要使用特定的命令和工具。 一、MySQL 修改 Root 密码 MySQL 8.0 版本在安装完成之后,

    2024年01月21日
    浏览(45)
  • 【MySQL 8.0】标准配置文件详解(上)

    将按照不同的模块介绍配置项: 文末附上参考配置文件 socket MySQL 在本地可以通过 socket 方式连接,如果 my.cnf 配置文件中的 [client] 部分没有指定 socket 文件路径, mysql 默认会去寻找 /tmp/mysql.sock 为了安全考虑,通常会设置特定的 socket 路径 port 默认情况下,MySQL使用3306作为默

    2024年02月03日
    浏览(54)
  • MySql 8.0 配置外网访问

    1.登进MySQL之后 2,输入以下语句,进入mysql库: 3,更新域属性,\\\'%\\\'表示允许外部访问: 4,执行以上语句之后再执行: 5,再执行授权语句: 然后外部就可以通过账户密码访问了。 6,其它说明: 命令本质上的作用是: 将当前user和privilige表中的用户信息/权限设置从mysql库(

    2024年02月16日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包