MySQL 8.0.23 主要更新一览(新特征解读)
作者:管长龙
爱可生交付服务部DBA,主要负责MySQL及Redis的日常问题处理,参与公司数据库培训的教研授课及开源社区的运营工作。
本文来源:原创投稿
*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
上篇文章给大家介绍了MySQL8.0.23安装超详细教程 ,感兴趣的朋友点击查看。
MySQL8.0.23已于作日发布,目前发布频率稳定保持3个月一次。本次发布是维护版本,除了修复一些Bug,此版本还增添了一些新功能。
一、不可见列
列可以定义为不可见,例如:
#创建表时,可使其不可见(ALTERTABLE也支持) mysql>CREATETABLEt1(col1INT,col2INTINVISIBLE); mysql>INSERTINTOt1(col1,col2)VALUES(1,2),(3,4); #SQL语句通过显式引用它来使用不可见列 mysql>SELECT*FROMt1; +------+ |col1| +------+ |1| |3| +------+ #如果未引用不可见的列,则该列将不会出现在结果中 mysql>SELECTcol1,col2FROMt1; +------+------+ |col1|col2| +------+------+ |1|2| |3|4| +------+------+
https://dev.mysql.com/doc/refman/8.0/en/invisible-columns.html
二、查询属性
允许应用程序为其查询设置每个查询元数据。
mysql>query_attributesn1v1n2v2; mysql>SELECT mysql_query_attribute_string('n1')AS'attr1', mysql_query_attribute_string('n2')AS'attr2', mysql_query_attribute_string('n3')AS'attr3'; +--------+--------+--------+ |attr1|attr2|attr3| +--------+--------+--------+ |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>CREATEUSER'user_name'@'127.0.0.1'; mysql>CREATEUSER'user_name'@'198.51.100.44'; #使用CIDR表示法指定为IP地址的帐户 mysql>CREATEUSER'user_name'@'192.0.2.21/8'; mysql>CREATEUSER'user_name'@'198.51.100.44/16'; #使用带子网掩码格式的指定为IP地址的账户 mysql>CREATEUSER'user_name'@'192.0.2.0/255.255.255.0'; mysql>CREATEUSER'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操作的更精细的特权控制,以使客户可以执行FLUSHOPTIMIZER_COSTS,FLUSHSTATUS,FLUSHUSER_RESOURCES和FLUSHTABLES语句,无需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/ALTERTABLESPACE子句和独立表空间的CREATE/ALTERTABLE子句新增自动扩展属性。原表空间的增长大小已在InnoDB内部硬编码为1MB[默认](page_size*一个范围内的页面数)。设置后,表空间的增长大小可以由用户决定。
#创建或修改表时指定扩展空间大小 mysql>CREATETABLEt1(c1INT)AUTOEXTEND_SIZE=4M; mysql>ALTERTABLEt1AUTOEXTEND_SIZE=4M; #查询该属性值 mysql>SELECTNAME,AUTOEXTEND_SIZEFROMINFORMATION_SCHEMA.INNODB_TABLESPACES WHERENAMELIKE'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
五、复制
术语替换
不推荐使用CHANGEMASTERTO语句,改用别名CHANGEREPLICATIONSOURCETO。该语句的参数还具有别名,该别名用术语SOURCE代替术语MASTER。例如,现在可以将MASTER_HOST和MASTER_PORT输入为SOURCE_HOST和SOURCE_PORT。STARTREPLICA|SLAVE语句的参数MASTER_LOG_POS和MASTER_LOG_FILE现在具有别名SOURCE_LOG_POS和SOURCE_LOG_FILE。语句的工作方式与以前相同,只是每个语句使用的术语已更改。如果使用旧版本,则会发出弃用警告。
直接从禁用GTID的主机复制到启用GTID的从机
CHANGEREPLICATIONSOURCETO语句新增选项:ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS=[OFF,LOCAL,
允许数据在非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协议添加了检查。
从MySQL8.0.23开始,服务器将通知所有客户端有关它是刚刚关闭连接还是自行关闭的信息。客户端可以使用此信息来决定重新连接是否有意义,然后重试。
七、其他
优化哈希联接的哈希表的实现。目的是提高性能,使用更少的内存并改善内存控制。
用标准C++11替换了部分旧的InnoDB代码。加强代码中使用原子性的规则和语义,从而使代码更符合标准。
八、弃用和移除
弃用relay_log_info_repository和master_info_repository。当用户设置或读取relay_log_info_repository或master_info_repository变量的值时,将出现弃用警告。未来,用于存储复制配置和元数据的唯一选项将在事务系统表中。
不赞成使用FLUSHHOSTS语句,而建议使用TRUNCATEperformance_schema.host_cache,并将在以后的MySQL版本中删除。
文章参考
MySQL8.0.23ReleaseNotes:
https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-23.html
TheMySQL8.0.23MaintenanceReleaseisGenerallyAvailable
https://mysqlserverteam.com/the-mysql-8-0-23-maintenance-release-is-generally-available/
到此这篇关于MySQL8.0.23主要更新一览(新特征解读)的文章就介绍到这了,更多相关MySQL8.0.23更新内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!