MySQL 8.0.23 主要更新一览(新特征解读)

作者:管长龙
爱可生交付服务部 DBA,主要负责 MySQL 及 Redis 的日常问题处理,参与公司数据库培训的教研授课及开源社区的运营工作。
本文来源:原创投稿
* 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

上篇文章给大家介绍了MySQL8.0.23安装超详细教程 ,感兴趣的朋友点击查看。

MySQL 8.0.23 已于作日发布,目前发布频率稳定保持 3 个月一次。本次发布是维护版本,除了修复一些 Bug,此版本还增添了一些新功能。

一、不可见列

列可以定义为不可见,例如:

# 创建表时,可使其不可见(ALTER TABLE 也支持)
mysql> CREATE TABLE t1 (col1 INT, col2 INT INVISIBLE);
mysql> INSERT INTO t1 (col1, col2) VALUES(1, 2), (3, 4);

# SQL 语句通过显式引用它来使用不可见列
mysql> SELECT * FROM t1;
+------+
| col1 |
+------+
|  1 |
|  3 |
+------+

# 如果未引用不可见的列,则该列将不会出现在结果中
mysql> SELECT col1, col2 FROM t1;
+------+------+
| col1 | col2 |
+------+------+
|  1 |  2 |
|  3 |  4 |
+------+------+

https://dev.mysql.com/doc/refman/8.0/en/invisible-columns.html

二、查询属性

允许应用程序为其查询设置每个查询元数据。

mysql> query_attributes n1 v1 n2 v2;
mysql> SELECT
     mysql_query_attribute_string('n1') AS 'attr 1',
     mysql_query_attribute_string('n2') AS 'attr 2',
     mysql_query_attribute_string('n3') AS 'attr 3';
+--------+--------+--------+
| attr 1 | attr 2 | attr 3 |
+--------+--------+--------+
| v1   | v2   | NULL  |
+--------+--------+--------+

https://dev.mysql.com/doc/refman/8.0/en/query-attribute-udfs.html#udf_mysql-query-attribute-string

三、安全

Doublewrite 文件页加密

InnoDB 自动加密属于加密表空间的 Doublewrite 文件页面,无需采取任何措施。使用相关表空间的加密密钥对 Doublewrite 文件页进行加密。同一表空间中被写入数据的加密页面也会被写入 Doublewrite 文件。属于未加密表空间的 Doublewrite 文件页面保持未加密状态。在恢复过程中,加密的 Doublewrite 文件页面是未加密状态并检查是否损坏。

https://dev.mysql.com/doc/refman/8.0/en/innodb-data-encryption.html

提高账户确定性

为了让 TCP 连接匹配账户更具确定性,在匹配主机名指定的账户前,匹配账户的主机名部分将以以下顺序检查使用主机 IP 地址指定账户。

# 指定 IP 地址的帐户
mysql> CREATE USER 'user_name'@'127.0.0.1';
mysql> CREATE USER 'user_name'@'198.51.100.44';

# 使用 CIDR 表示法指定为 IP 地址的帐户
mysql> CREATE USER 'user_name'@'192.0.2.21/8';
mysql> CREATE USER 'user_name'@'198.51.100.44/16';

# 使用带子网掩码格式的指定为 IP 地址的账户
mysql> CREATE USER 'user_name'@'192.0.2.0/255.255.255.0';
mysql> CREATE USER 'user_name'@'198.51.0.0/255.255.0.0';

https://dev.mysql.com/doc/refman/8.0/en/connection-access.html

更精准的 FLUSH 权限

授予 RELOAD 权限的用户可以执行各种操作。在某些情况下,为了使 DBA 避免授予 RELOAD 并使用户权限更接近允许的操作,已对 FLUSH 操作的更精细的特权控制,以使客户可以执行 FLUSH OPTIMIZER_COSTS,FLUSH STATUS,FLUSH USER_RESOURCES 和 FLUSH TABLES 语句,无需 RELOAD 权限。

https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_reload

四、InnoDB

优化 TRUNCATE / DROP

当用户对 InnoDB 表空间 TRUNCATE 或 DROP 操作:

  • 对有庞大缓冲池(>32GB)实例上的大表删除
  • 对具有自适应哈希索引引用大量页面的表空间
  • TRUNCATE 临时表空间

以上情况,MySQL 现在将其标记为已删除,然后从缓冲池懒惰地释放属于已删除表空间的所有页面,或者像释放页面一样重用它们。

新增表空间 AUTOEXTEND_SIZE 属性

InnoDB 常规表 CREATE / ALTER TABLESPACE 子句和独立表空间的 CREATE / ALTER TABLE 子句新增自动扩展属性。原表空间的增长大小已在 InnoDB 内部硬编码为 1MB [默认](page_size * 一个范围内的页面数)。设置后,表空间的增长大小可以由用户决定。

# 创建或修改表时指定扩展空间大小
mysql> CREATE TABLE t1 (c1 INT) AUTOEXTEND_SIZE = 4M;
mysql> ALTER TABLE t1 AUTOEXTEND_SIZE = 4M;

# 查询该属性值
mysql> SELECT NAME, AUTOEXTEND_SIZE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES
    WHERE NAME LIKE 'test/t1';
+---------+-----------------+
| NAME  | AUTOEXTEND_SIZE |
+---------+-----------------+
| test/t1 |     4194304 |
+---------+-----------------+

https://dev.mysql.com/doc/refman/8.0/en/innodb-tablespace-autoextend-size.html

新增 temptable_max_mmap 变量

新变量定义了 TempTable 存储引擎在开始将内部临时表数据存储到 InnoDB 磁盘内部临时表之前,被允许从内存映射文件分配的最大内存量。temptable_max_mmap = 0 设置将禁用从内存映射文件的分配。

https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_temptable_max_mmap

五、复制

术语替换

不推荐使用 CHANGE MASTER TO 语句,改用别名 CHANGE REPLICATION SOURCE TO。该语句的参数还具有别名,该别名用术语 SOURCE 代替术语 MASTER。例如,现在可以将 MASTER_HOST 和 MASTER_PORT 输入为 SOURCE_HOST 和 SOURCE_PORT。START REPLICA | SLAVE 语句的参数 MASTER_LOG_POS 和 MASTER_LOG_FILE 现在具有别名 SOURCE_LOG_POS 和 SOURCE_LOG_FILE。语句的工作方式与以前相同,只是每个语句使用的术语已更改。如果使用旧版本,则会发出弃用警告。

直接从禁用 GTID 的主机复制到启用 GTID 的从机

CHANGE REPLICATION SOURCE TO 语句新增选项: ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS = [OFF,LOCAL,<UUID>]

允许数据在非 GTID 实例和 GTID 实例之间传输。

https://dev.mysql.com/doc/refman/8.0/en/replication-gtids-assign-anon.html

在 MTS 死锁检测基础结构中包含 MDL 和 ACL 锁

将提供多线程的 REPLICA 所需的线程序列化基础结构与 MDL 和 ACL 访问序列化基础结构集成在一起,该多线程 REPLICA 与 SOURCE 保持相同的提交顺序。其动机是能够在 REPLICA 主动处理变更流时在 REPLICA 上执行任何客户端语句。此类语句可能会创建死锁,必须对其进行检测,并最终将其破坏以继续执行。

组复制

异步复制通道的自动连接故障转移,将确保接收方的发送方列表与组复制成员身份更改同步。

六、X 协议

经典的 MySQL 协议,如果 SQL 查询使用元数据锁定或睡眠功能,则将定期检查与服务器的连接以验证其是否仍然有效。 如果不是,则可以停止查询,以便它不会继续消耗资源。以前,X 协议不执行这些检查,并假定连接仍然有效。现在已为 X 协议添加了检查。

从 MySQL 8.0.23 开始,服务器将通知所有客户端有关它是刚刚关闭连接还是自行关闭的信息。客户端可以使用此信息来决定重新连接是否有意义,然后重试。

七、其他

优化哈希联接的哈希表的实现。目的是提高性能,使用更少的内存并改善内存控制。

用标准 C++11 替换了部分旧的 InnoDB 代码。加强代码中使用原子性的规则和语义,从而使代码更符合标准。

八、弃用和移除

弃用 relay_log_info_repository 和 master_info_repository 。当用户设置或读取 relay_log_info_repository 或 master_info_repository 变量的值时,将出现弃用警告。未来,用于存储复制配置和元数据的唯一选项将在事务系统表中。

不赞成使用 FLUSH HOSTS 语句,而建议使用 TRUNCATE performance_schema.host_cache,并将在以后的 MySQL 版本中删除。

文章参考

MySQL 8.0.23 Release Notes:

https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-23.html

The MySQL 8.0.23 Maintenance Release is Generally Available

https://mysqlserverteam.com/the-mysql-8-0-23-maintenance-release-is-generally-available/

到此这篇关于MySQL 8.0.23 主要更新一览(新特征解读)的文章就介绍到这了,更多相关MySQL 8.0.23 更新内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • mysql8.0.23 linux(centos7)安装完整超详细教程

    上篇文章给大家介绍了MySQL 8.0.23 主要更新一览(新特征解读) ,感兴趣的朋友点击查看吧! 最新版windows mysql-8.0.23-winx64,点击下载 mysql8.0.23 linux(centos7)安装教程(附:配置外网连接用户授权 与 不区分大小写配置) (博主在这里叨叨几句,稍后进入正题.在使用开发过程中,有时候数据库结合使用,会成倍提高程序效率) 什么是关系型数据库? 常见的关系型数据库: (其实博主也只使用过 MySQL Oracle sqlServer) O

  • MySQL8.0.23安装超详细教程

    前言 最近在做一个人脸识别的项目,需要用数据库保存学生信息与前段交互. MySQL的优点 1.mysql性能卓越,服务稳定,很少出现异常宕机. 2.mysql开放源代码且无版权制约,自主性及使用成本低. 3.mysql历史悠久,社区及用户非常活跃,遇到问题,可以寻求帮助. 提示:以下是本篇文章正文内容,下面案例可供参考 一.官网下载MySQL 地址:https://dev.mysql.com/downloads/mysql/ 可以按照我的版本下载,也可以下载你想要的版本,过程都是差不多的 二.配

  • MySQL 8.0.23 主要更新一览(新特征解读)

    作者:管长龙 爱可生交付服务部 DBA,主要负责 MySQL 及 Redis 的日常问题处理,参与公司数据库培训的教研授课及开源社区的运营工作. 本文来源:原创投稿 * 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源. 上篇文章给大家介绍了MySQL8.0.23安装超详细教程 ,感兴趣的朋友点击查看. MySQL 8.0.23 已于作日发布,目前发布频率稳定保持 3 个月一次.本次发布是维护版本,除了修复一些 Bug,此版本还增添了一些新功能. 一.不可见列 列可以定

  • win10下mysql 8.0.23 安装配置方法图文教程

    本文为大家分享了mysql 8.0.23 安装配置方法,供大家参考,具体内容如下 一.首先需要到官方mysql中下载最新版mysql 解压到指定目录如:D:\WinInstall\mysql-8.0.23-winx64 这时候你需要在根目录下创建两个文件,分别是data文件夹和my.ini文件,然后使用编辑器编辑my.ini文件,并在其中添加 [mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=D:\WinInstall\mysql-8.0.

  • MySQL 8.0.23中复制架构从节点自动故障转移的问题

    接触MGR有一段时间了,MySQL 8.0.23的到来,基于MySQL Group Replicaion(MGR)的高可用架构又提供了新的架构思路. 灾备机房的slave,如何更好的支持主机房的MGR? MGR 到底可以坏几个节点? 这次我就以上2个问题,和大家简单聊下MGR的一些思想和功能. 一.MySQL Group Relication 成员数量的容错能力 上面的表格相信大家不会陌生了,我经常在面试里会问:"4个节点的MGR,最多坏几个呢?" ,多数人回答:"最多坏1个

  • MySQL 8.0新特性之隐藏字段的深入讲解

    前言 MySQL 8.0.23 版本增加了一个新的功能:隐藏字段(Invisible Column),也称为不可见字段.本文给大家介绍一下 MySQL 隐藏字段的相关概念和具体实现. 基本概念 隐藏字段需要在查询中进行显式引用,否则对查询而言是不可见的.MySQL 8.0.23 开始支持隐藏字段,在此之前所有的字段都是可见字段. 考虑以下应用场景,假如一个应用程序使用SELECT *语句访问某个表,并且必需持续不断地进行查询,即使我们为该表增加了一个该应用不需要的新字段时也要求能够正常工作.对于

  • MySQL8.0.23免安装版配置详细教程

    第一步 下载免安装版Mysql 8.0.23 版本 点击下载MySQL8.0.23压缩包 解压文件,进入\mysql-8.0.23-winx64 文件夹中 解压完全后的目录 第二步 创建txt文件改名为my.ini (后缀修改为ini) 第三步 打开my.ini将以下内容复制进入my.ini [mysql] #设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置3306端口 port =3306 #设置安装目录 basedir=D:\so

  • MySQL 8.0的关系数据库新特性详解

    前言 MySQL 8.0 当前的最新版本是 8.0.4 rc,估计正式版本出来也快了.本文介绍几个 8.0 在关系数据库方面的主要新特性. 你可能已经知道 MySQL 从版本 5.7 开始提供了 NoSQL 存储的功能,在 8.0 中这部分功能也得到了一些改进,但鉴于这个在实际当中用得极少,本人也是没用过,所以本文不会介绍这方面的东西,而是关注其关系数据库方面. 1.隐藏索引 隐藏索引的特性对于性能调试非常有用.在 8.0 中,索引可以被"隐藏"和"显示".当一个索

  • MySQL 8.0 新特性之哈希连接(Hash Join)

    MySQL 开发组于 2019 年 10 月 14 日 正式发布了 MySQL 8.0.18 GA 版本,带来了一些新特性和增强功能.其中最引人注目的莫过于多表连接查询支持 hash join 方式了.我们先来看看官方的描述: MySQL 实现了用于内连接查询的 hash join 方式.例如,从 MySQL 8.0.18 开始以下查询可以使用 hash join 进行连接查询: SELECT * FROM t1 JOIN t2 ON t1.c1=t2.c1; Hash join 不需要索引的支

  • MySQL 8.0 新特性之检查约束的实现

    大家好,我是只谈技术不剪发的 Tony 老师.这次我们来介绍一个 MySQL 8.0 增加的新功能:检查约束(CHECK ). SQL 中的检查约束属于完整性约束的一种,可以用于约束表中的某个字段或者一些字段必须满足某个条件.例如用户名必须大写.余额不能小于零等. 我们常见的数据库都实现了检查约束,例如 Oracle.SQL Server.PostgreSQL 以及 SQLite:然而 MySQL 一直以来没有真正实现该功能,直到最新的 MySQL 8.0.16. MySQL 8.0.15 之前

  • MySQL 8.0新特性 — 管理端口的使用简介

    前言 下面这个报错,相信大多数童鞋都遇见过:那么碰到这个问题,我们应该怎么办呢?在MySQL 5.7及之前版本,出现"too many connection"报错,超级用户root也无法登录上去,除了重启实例,没有其他更好的解决办法:不过在MySQL 8.0版本中,是对连接管理做了一些优化,下面我们就来看一下. ERROR 1040 (HY000): Too many connections 连接管理 在MySQL 8.0版本中,对连接管理这一块,是先后做了两个比较大的改变:一个是允许

随机推荐