服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - MySQL 8.0.23 主要更新一览(新特征解读)

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

2021-04-04 22:38ActionTech Mysql

这篇文章主要介绍了MySQL 8.0.23 主要更新一览(新特征解读),需要的朋友可以参考下

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

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

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

一、不可见列

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 创建表时,可使其不可见(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

二、查询属性

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

?
1
2
3
4
5
6
7
8
9
10
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 地址指定账户。

?
1
2
3
4
5
6
7
8
9
10
11
# 指定 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 * 一个范围内的页面数)。设置后,表空间的增长大小可以由用户决定。

?
1
2
3
4
5
6
7
8
9
10
11
12
# 创建或修改表时指定扩展空间大小
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 更新内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/ActionTech/article/details/112845475

延伸 · 阅读

精彩推荐
  • Mysql详解MySQL中的分组查询与连接查询语句

    详解MySQL中的分组查询与连接查询语句

    这篇文章主要介绍了MySQL中的分组查询与连接查询语句,同时还介绍了一些统计函数的用法,需要的朋友可以参考下 ...

    GALAXY_ZMY5432020-06-03
  • Mysql浅谈mysql 树形结构表设计与优化

    浅谈mysql 树形结构表设计与优化

    在诸多的管理类,办公类等系统中,树形结构展示随处可见,本文主要介绍了mysql 树形结构表设计与优化,具有一定的参考价值,感兴趣的小伙伴们可以参...

    小码农叔叔5242021-11-16
  • Mysql解决MySQl查询不区分大小写的方法讲解

    解决MySQl查询不区分大小写的方法讲解

    今天小编就为大家分享一篇关于解决MySQl查询不区分大小写的方法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起...

    Veir_dev5592019-06-25
  • MysqlMySQL锁的知识点总结

    MySQL锁的知识点总结

    在本篇文章里小编给大家整理了关于MySQL锁的知识点总结以及实例内容,需要的朋友们学习下。...

    别人放弃我坚持吖4362020-12-14
  • MysqlMySQL数据库varchar的限制规则说明

    MySQL数据库varchar的限制规则说明

    本文我们主要介绍了MySQL数据库中varchar的限制规则,并以一个实际的例子对限制规则进行了说明,希望能够对您有所帮助。 ...

    mysql技术网4192019-11-23
  • Mysqlmysql 不能插入中文问题

    mysql 不能插入中文问题

    当向mysql5.5插入中文时,会出现类似错误 ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' for column ...

    MYSQL教程网5722019-11-25
  • MysqlMySQL 数据备份与还原的示例代码

    MySQL 数据备份与还原的示例代码

    这篇文章主要介绍了MySQL 数据备份与还原的相关知识,本文通过示例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    逆心2962019-06-23
  • MysqlERROR: Error in Log_event::read_log_event()

    ERROR: Error in Log_event::read_log_event()

    ERROR: Error in Log_event::read_log_event(): read error, data_len: 438, event_type: 2 ...

    MYSQL教程网6402020-03-13