暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL 8.0 相关版本的优化和改进

原创 飞鸟 2023-05-24
241

版本:8.0.22

审计日志的改进

对于JSON格式的日志文件,MySQL企业审计支持使用audit_log_read()用户定义函数进行日志读取操作。之前,只有通过向audit_log_read()传递一个参数才能指定开始读取的位置,为了更加灵活现在可以命名一个以时间戳的开始说明符,以便从该时间戳或之后的第一个事件开始读取,MySQL企业版现在包含一个keyring_oci插件,它使用Oracle Cloud Infrastructure Vault作为密钥环存储的后端。密钥信息不会永久存储在MySQL服务器本地存储中。

优化器部分:

prepared语句现在只在执行PREPARE时准备一次,而不是在每次执行时准备一次。此外,存储过程里面的语句也仅在初次执行时准备一次。

filesort算法现在支持对多个表上的联接进行排序,而不仅仅是对单个表进行排序。

在MySQL 8.0.22中,服务器在内部将所有右连接实例处理为左连接,消除了一些在解析时没有执行完整转换的特殊情况。

增加了支持SELECT INTO DUMPFILE 和 SELECT INTO OUTFILE 在写入文件时定期同步。

MySQL现在为符合条件的查询实现派生条件下推,将外部where条件推入派生表。

SQL语法

支持对YEAR数据类型进行转换,支持TIMESTAMP使用UTC,并且支持通过JSON_VALUE()返回JSON值。

功能和函数方面

使用MySQL服务器的新的异步连接故障转移机制,在从副本到源的现有连接失败后,自动建立到新源的异步(源到副本)复制连接。

通过新的变量innodb_extend_and_initialize,允许在Linux上配置InnoDB如何分配空间给每个表的文件和一般表空间。

允许在MySQL授权表上进行DML和DDL的读取操作,之前需要取得行锁,现在采取了非锁定操作。

group_replication_ip_whitelist变量降级使用,将采用新的变量group_replication_ip_allowlist名称。

START SLAVE, STOP SLAVE, SHOW SLAVE STATUS, SHOW SLAVE HOSTS 及 RESET SLAVE降级使用,使用REPLICA来替代。

ALTER DATABASE 语句支持 READ ONLY选项,控制是否允许修改数据库和其中的对象。

 

版本:8.0.23

用户管理:授予RELOAD权限,使用户可以执行各种操作,避免了DBA重新加载,并更加详细的定制权限。

连接管理:为了使与TCP客户端连接匹配的帐户的算法更具确定性,在尝试匹配使用主机名指定的帐户之前,匹配帐户的主机名部分将以特定的顺序检查使用主机IP地址指定的帐户。

性能优化:采用了更快地哈希表,更好的控制内存。更小的内存使用量,减少溢出到磁盘的频率。

SQL语法:MySQL现在支持不可见的列,这些列通常对查询是隐藏的,但如果显式引用,则可以访问它们。

InnoDB:

在以下操作方面提升了性能:

在MySQL实例上删除一个大的表空间(> 32GB)。

删除从自适应哈希索引引用大量页面的表空间。

删除临时表空间。

增加了AUTOEXTEND_SIZE选项,该选项定义了当表空间满时,InnoDB扩展表空间大小的大小,这样就可以以更大的增量扩展表空间大小。以较大增量分配空间有助于避免碎片化,并促进大量数据的摄入。

InnoDB现在支持对属于加密表空间的doublewrite文件页进行加密。这些页面使用相关表空间的加密密钥进行加密。

MySQL服务器的异步连接故障转移机制现在支持组复制拓扑,通过自动监控组成员关系的变化,并区分主服务器和次要服务器。当向源列表添加组成员并将其定义为被管理组的一部分时,异步连接故障转移机制将更新源列表,使其与成员关系更改保持一致,并在组成员加入或离开时自动添加和删除组成员。      

新的asynchronous_connection_failover_add_managed()和asynchronous_connection_failover_delete_managed() UDF用于添加和删除托管源。如果当前连接的源脱机、离开组或不再占多数,并且当前连接的源在组中没有最高的加权优先级,则连接将故障转移到另一个组成员。

现在,可以使用CHANGE Replication SOURCE to语句的ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS选项将复制通道设置成为没有GTID的复制事务分配GTID。此特性支持从不使用基于GTID的复制的源复制到使用基于GTID的复制。对于一个多源副本,您可以混合使用使用ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS的通道和不使用该通道的通道。GTID可以包含副本自己的服务器UUID,或者指定用于标识来自不同来源的事务的服务器UUID。

 

 

 

版本:8.0.24

修复了219个bug

审计日志

MySQL企业审核现在支持对JSON格式的日志文件进行审核日志文件修剪。请参阅审核日志文件的空间管理。

编译须知

GCC 10现在是用于在EL7或EL8上构建MySQL的受支持编译器。devtoolset-10(EL7)或 gcc-toolset-10(EL8)软件包中提供了此编译器 。在构建基于libmysqlclientC API库的第三方应用程序时,还建议使用GCC 10 。(缺陷#32381003)

连接管理说明

以前,如果客户端在wait_timeout系统变量指定的时间内未使用 与服务器的连接,并且服务器关闭了连接,则客户端不会收到原因的通知。通常,客户端会在查询 (CR_SERVER_LOST)或 MySQL服务器消失 (CR_SERVER_GONE_ERROR)时看到 与MySQL服务器的连接断开。

在这种情况下,服务器现在会在关闭连接之前将原因写入连接,并且客户端会收到更多有用的错误消息:客户端由于不活动而被服务器断开了连接。有关配置此行为,请参见wait_timeout和interactive_timeout。 (ER_CLIENT_INTERACTION_TIMEOUT)。

以前的行为仍然适用于客户端与较旧服务器的连接以及较旧客户端与服务器的连接。

错误处理

客户端连接失败消息现在包括端口号。例如:无法连接到“ 127.0.0.1:63333”上的MySQL服务器。。感谢Daniëlvan Eeden的贡献。(缺陷号30787660,错误#98311)

钥匙圈注意事项

MySQL密钥环以前使用服务器插件实现了密钥库功能,但现在正过渡到使用MySQL组件基础结构,从这些密钥环组件开始:

component_keyring_file将密钥环数据存储在服务器主机本地的文件中。该组件在MySQL Community Edition和MySQL Enterprise Edition发行版中可用。请参阅 使用component_keyring_file基于文件的密钥环组件。

component_keyring_encrypted_file将密钥环数据存储在服务器主机本地的加密且受密码保护的文件中。该组件在MySQL企业版发行版中可用。请参阅 使用component_keyring_encrypted_file加密的基于文件的密钥环组件。

新的密钥环组件与现有的keyring_file和 keyring_encrypted_file插件相似 ,但配置不同,使用不同的磁盘存储格式,并且对密钥类型和密钥大小的限制较少。

–early-plugin-load在启动过程 中不使用服务器选项加载密钥环组件,或者在启动过程中或在运行时使用系统变量配置密钥环组件 :

在启动过程中,服务器使用清单文件确定要加载的密钥环组件,并且在初始化时,已加载的组件将查询其自己的配置文件。请参阅“ 密钥环组件安装”。

在运行时,使用newALTER INSTANCE RELOAD KEYRING语句可以在更改其配置文件后重新配置已安装的密钥环组件。请参阅ALTER INSTANCE语句。

如果安装了密钥环组件,则新的“性能模式” keyring_component_status表将提供有关其的状态信息。请参阅 keyring_component_status表。

关键迁移功能已得到扩展。以前,密钥迁移仅从一个密钥环插件发生到另一个。新的 --keyring-migration-to-component 服务器选项允许从密钥环插件到密钥环组件的密钥迁移;这有助于将MySQL安装从密钥环插件过渡到密钥环组件。新的 mysql_migrate_keyring实用程序允许将密钥从一个密钥环组件迁移到另一个。请参阅 在密钥环密钥库之间迁移密钥。没有提供将密钥从密钥环组件迁移到密钥环插件的规定。

现有的密钥环插件仍然可用,而用户可见的特征没有变化,但是对它们的实现进行了修改,以使用组件基础结构。使用名为的内置插件可简化此过程,该插件 daemon_keyring_proxy_plugin充当插件和组件服务API之间的桥梁。请参阅 “密钥环代理桥插件”。

优化器调整

MySQL查询优化器现在可以将派生表优化应用于相关的标量子查询。这是通过应用额外的分组,然后对提升的谓词进行外部联接来完成的。例如,诸如的查询SELECT * FROM t1 WHERE (SELECT a FROM t2 WHERE t2.a=t1.a) > 0可以重写为SELECT t1.* FROM t1 LEFT OUTER JOIN (SELECT a, COUNT(*) AS ct FROM t2 GROUP BY a) AS derived ON t1.a = derived.a WHERE derived.a > 0。

如果子查询已经具有显式分组,则MySQL会将额外的分组添加到现有分组列表的末尾。

MySQL执行基数检查,以确保子查询返回的行不超过一行,ER_SUBQUERY_NO_1_ROW如果返回则进行查询 。在评估提升的谓词之前,检查是评估重写查询中的任何WHEREorJOIN子句的一部分 。

有关更多信息,请参见“ 相关子查询”以及“ 派生表”。

安装包注意事项

捆绑的libedit库已升级到版本20190324-3.1。(缺陷#32433089)

包含curl而不是链接到系统curl库的二进制程序包已升级为使用curl7.74.0。

性能架构说明

不兼容的更改: 性能架构setup_instruments表中的工具进行了 如下修改:

有新的内存工具可用来处理分配给数据字典基础结构和对象的内存:

内存/ sql / dd :: infrastructure
内存/ sql / dd :: objects
一些仪器被重命名以提高仪器命名的一致性。受影响的乐器名称使用与C ++名称空间相同的样式的键前缀进行分组。例如,与错误相关的工具使用 error::前缀,而与分区相关的工具使用Partition::前缀。下表显示了受影响的仪器。

旧乐器名称 新乐器名称
debug_sync_control::debug_sync_action THD::debug_sync_action
errmsgs errmsgs::server
handler::errmsgs errmsgs::handler
handlerton handlerton::objects
log_error_loaded_services log_error::loaded_services
log_error_stack log_error::stack
LOG_name LOG::file_name
MDL_context_backup_manager MDL_context::backup_manager
Partition_admin Partition::admin
Partition_share Partition::share
partition_sort_buffer Partition::sort_buffer
partition_syntax_buffer Partition::syntax_buffer
Prepared_statement_map Prepared_statement::infrastructure
prune_partitions::exec Partition::prune_exec
Recovered_xa_transactions XA::recovered_transactions
thd::main_mem_root THD::main_mem_root
XID XA::transaction_contexts
此外,该servers仪器是的重复品,servers_cache已被删除。

使用旧的或删除的仪器名称的应用程序应进行调整以解决此更改。

列中为多个仪器提供了一个值 DOCUMENTATION(不再是 NULL),从而提高了运行时仪器文档的可用性。

可插拔身份验证

通过新的 caching_sha2_password_digest_rounds 系统变量,可以配置caching_sha2_password 身份验证插件用于密码存储的哈希回合数。

安全调整

对于捆绑了OpenSSL库的平台,用于MySQL Server的链接OpenSSL库已更新至1.1.1k版本。在https://www.openssl.org/news/cl111.txt和 https://www.openssl.org/news/vulnerabilities.html上描述了新的OpenSSL版本中修复的问题 。(缺陷#32680637)

空间数据支持

新 函数ST_LineInterpolatePoint() 和ST_LineInterpolatePoints()函数返回在LineString几何的起点和终点之间插入的单个点或多个点 。新 ST_PointAtDistance()函数将沿LineString几何图形返回给定距离的单个点 。请参见 空间运算符函数。

新的ST_Collect()聚合函数采用多个几何参数,并从中产生单个几何集合值。请参见 空间聚合函数

的CAST()和 CONVERT()功能已经扩展到从一个空间类型支持铸造几何值到另一个。请参见强制转换函数和运算符。

新增或更改功能

InnoDB的: 将AUTOEXTEND_SIZE最大设置从64M提高到4GB。该 AUTOEXTEND_SIZE选项在MySQL 8.0.23中引入,它定义了InnoDB 当表空间变满时扩展表空间大小的数量。支持该选项与CREATE TABLE,ALTER TABLE, CREATE TABLESPACE,和 ALTER TABLESPACE语句。有关更多信息,请参见表 空间AUTOEXTEND_SIZE配置。(缺陷#32438606)

微软的Windows: 将/RTC1编译器标志从调试的编译器标志去掉,以减少运行由调用的所有测试所需的时间,mysql-test-run.pl在Windows上使用MSVC时脚本。最初,此编译器标志是随CMake 程序一起引入的(默认为调试版本),它生成代码以测试函数调用周围的堆栈损坏以及在运行时使用未初始化的变量。删除该错误不会导致发现错误的损失/RTC1 编译器标志。地址清理(ASAN)测试很可能会发现内存错误,例如堆栈损坏,并且编译器警告会检测到未初始化变量的使用。(错误#32525732)

微软Windows系统: 该 named_pipe_full_access_group 系统变量现在默认为空字符串(’’),使得命名的管道连接固定。以前’everyone’是默认值。有效的Windows本地组名称可能会被替换。

新的 clone_donor_timeout_after_network_failure Clone插件变量定义了捐赠者允许接收者在网络故障后重新连接并重新开始克隆操作的时间。超时先前固定为5分钟。现在可以将超时延长至30分钟,以提供更多时间来解决网络问题。

感谢Daniëlvan Eeden的贡献。(缺陷#32335434,缺陷#102103)

现在,客户端应用程序和测试套件插件会生成报表,utf8mb3而不是utf8 在编写字符集名称时生成报表 。(缺陷#32164079,错误#32164125)

现在,可以在组复制仍在运行时更新组复制的主机允许列表,从该主机可以接受传入的组通信系统连接。因此,您可以将新成员添加到允许列表控制的组中,而无需停止和重新启动组复制。允许列表由group_replication_ip_allowlist每个组成员上的系统变量指定 。

该–skip-slave-start命令行参数用于防止复制I / O线程和复制SQL线程从起动时副本服务器重新启动。但是,在命令行或my.cnf选项文件中使用参数可能需要登录到服务器主机。该 skip_slave_start系统变量现在提供给访问使用MySQL服务器的权限结构此功能,使数据库管理员不需要操作系统的任何特权。新的全局系统变量是只读的,可以使用SET PERSIST_ONLY语句进行设置。作为系统变量,它的值也可以从MySQL客户端查询并由MySQL API使用。这–skip-slave-start 命令行参数仍然可以用作替代参数,它可以设置新的全局系统变量。

 

 

版本:8.0.25

此次更新主要包含一个变更和两个bug修复:

Binary packages that include curl rather than linking to the system curl library have been upgraded to use curl 7.76.0.

On Fedora 34, builds from source failed due to an undefined reference to symbol crc32_z@@ZLIB_1.2.9. (Bug #32702860)

For a prepared, implicitly grouped SELECT statement in which the WHERE clause was determined always to be false, the result of some aggregate functions could sometimes be picked up from the previous execution of the statement. (Bug #103192, Bug #32717969)

 

 

版本:8.0.26

 

一个变化需要注意,在这一版本里面改动了大量的变量名称,大量包含master和 slave的变量名称变为 source和replica。例如:slave_parallel_workers ->replica_parallel_workers。

关于 InnoDB: 新的系统变量innodb_segment_reserve_factor允许配置保留为空页的表空间文件段页的百分比。

EXPLAIN, SHOW CREATE PROCEDURE, SHOW CREATE EVENT语句在写字符集名称时使用utf8mb3而不是utf8。

从数据字典中检索的存储程序定义使用utf8mb3而不是utf8。这将影响从这些定义产生的输出。

在支持fdatasync()系统调用的平台上,新的innodb_use_fdatasync变量允许使用fdatasync()而不是fsync()来刷新操作系统。除非后续数据检索需要,否则fdatasync()系统调用不会刷新对文件元数据的更改,这提供了潜在的性能优势。innodb_use_fdatasync变量可以通过set语句动态设置。

       

关于组复制:现在可以将处于单主模式的组配置为处于超级只读模式,它将只接受复制的事务,而不接受来自客户端的任何直接写操作。这种设置意味着,当一个组的目的是为另一个组提供容灾时,可以确保容灾组与第一个组保持同步。当选举了一个新的主节点时,可以通过禁用通常在主节点上删除该模式的操作,将组配置为保持超级只读模式。

管理员可以使用新的组复制功能group_replication_enable_member_action和group_replication_disable_member_action配置组,该功能可以启用和禁用组成员在特定情况下采取的动作。只要安装了组复制插件,也可以在不属于组的服务器上使用这些函数。成员操作在主成员上配置,并传播到其他组成员和使加入成员。另一个函数group_replication_reset_member_actions可以将所有成员动作重置为默认设置。

组复制视图更改(View_change_log_event)生成的事务使用gitd写入二进制日志。新的组复制系统变量group_replication_view_change_uuid可以指定一个UUID,而不是使用组名(group_replication_group_name系统变量的值)。指定的UUID可以更容易地将视图更改事件与从客户端收到的事务区分开来。如果您的设置允许组之间进行故障转移,并且需要识别和丢弃特定于备份组的事务,那么这将非常有用。注意,组的所有成员必须指定相同的替代UUID,所以以这种方式设置的组不能包含MySQL 8.0.26以下版本的成员。   

 

 

 

 

 

 

 

 

 

 

版本:8.0.27

 

时隔3个月,MySQL的最新版本8.0.27于2021年10月19日正式GA。这是MySQL8.0的一个维护版本,除了修复207个Bug之外,还增加了一些新功能,让我们快速浏览一下:

多因素身份验证功能。MySQL支持对账户使用最多三种方法进行验证,可以在创建或者更改用户时启用该功能。命令行客户端可以使用--password1, --password2, --password3选项指定多个密码,用户可以利用该功能在关键操作上,使用多个用户密码同时进行验证,防止单一用户权限过大,或者误操作的现象发生。此外,企业版MySQL的该功能还支持使用智能卡、安全钥匙、生物识别读卡器进行验证,验证方法基于Fast Identity Online (FIDO)标准。

为了提高监视MySQL和故障排除的能力,Performance_Schema支持将度量线程名称(非mysqld)导出到操作系统,类似于Unix的ps执行效果。

引入了一个新的系统变量authentication_policy用以支持多因素身份验证功能,原有的变量default_authentication_plugin降级处理,未来将会删除。

系统变量group_replication_components_stop_timeout用来指定在关闭组复制时,等待仍在进行的组件完成操作的时长。之前的默认值为31536000(365天),无法起到应有的效果,新的默认值改为300秒。组复制组件停止5分钟后如果情况没有解决(仍有组件未完成操作),允许成员重新启动并重新加入。

复制功能默认启用多线程复制,一个多线程复制应用程序具有许多并行执行事务的应用程序线程。

MySQL复制的异步连接故障转移机制支持副本使用组复制(单主模式),当主要成员发生故障时,其他组成员可以再次连接到发送者。换句话说,MySQL支持使用单主模式的组复制(主要成员用于接受日志)作为异步复制的副本,当主要成员发生故障时,其他成员可以再次连接到复制源。使用该功能可以配置两个复制组之间的异步复制,并支持连接故障转移。

以上内容仅仅是这次发布功能的一部分,详细内容请访问MySQL官网。

 

 

 

 

 

版本:8.0.28

MySQL 8.0.28 在昨天(2022 年 1 月 18 日)正式发布。这一节内容,我们来快速浏览部分新特性。1 innodb_open_files 的修改现在支持动态修改。为了防止非 LRU 管理的文件占用整个 innodb_open_files 限制,非LRU管理的文件被限制到innodb_open_files 设置的90%,也就是为 LRU 管理的文件保留 innodb_open_files 设置的 10%。  
2 弃用部分字符集及其排序规则部分字符集及其排序规则在这个版本已弃用,并将在后续版本中删除,如下:

ucs2

macroman and macce

dec

hp8


3 新增 CPU 时间查询performance_schema.performance_timers 表新增 THREAD_CPU 字段,能够知道查询所用的 CPU 时间。
performance_schema 以下表新增 CPU_TIME 字段,CPU_TIME 表示当前线程在 CPU 上花费的时间。单位:皮秒(万亿分之一秒)。

events_statements_current

events_statements_history

events_statements_history_long


performance_schema 以下表新增了 SUM_CPU_TIME 字段,表示当前线程上花费的 CPU 时间,单位:皮秒。

events_statements_summary_by_thread_by_event_name

events_statements_summary_by_account_by_event_name

events_statements_summary_by_user_by_event_name

events_statements_summary_by_host_by_event_name

events_statements_summary_global_by_event_name

events_statements_summary_by_digest

events_statements_summary_by_program

prepared_statements_instances


sys 库以下表新增了 CPU_LATENCY 字段,也是指在当前线程上花费的 CPU 时间。

statement_analysis

user_summary_by_statement_type

user_summary_by_statement_latency

host_summary_by_statement_type

host_summary_by_statement_latency

processlist

session

x$statement_analysis

x$user_summary_by_statement_type

x$host_summary_by_statement_type

x$processlist

x$session

x$user_summary_by_statement_latency

x$host_summary_by_statement_latency


4 InnoDB 重命名字段支持 INSTANT 算法InnoDB 现在支持 ALTER TABLE ... RENAME COLUMN 使用 ALGORITHM=INSTANT。

https://www.modb.pro/db/610150  还有一些介绍

 

 

 

版本:8.0.29

8.0.29有重大关于innodb内核的bug,官网已经停止此版本,不再供用户下载。

 

 

 

版本:8.0.30

 

GIPK(Generated Invisible Primary Keys)

当开启GIPK模式后,可以允许没有显示定义主键的InnoDB表,自动生成不可见的主键。生成的主键名称为 ‘my_row_id’ 并且无法更改,用户需要注意该关键字的使用。

XA事务与复制

复制功能支持将XA事务的状态进行复制,解决了以往的复制功能在服务器节点出现异常时,无法保证执行XA PREPARE、XA COMMIT或XA ROLLBACK。

对于任何多服务器复制拓扑(包括组复制), XA事务状态可以一致地传播,以便所有服务器始终处于同一状态。对于任意的拓扑结构(包括单个服务器,只要启用了二进制日志记录),就可以恢复到一致状态。

InnoDB doublewrite buffer

增加了Innodb_doublewrite系统变量,该变量可以设置为DETECT_ONLY 或 DETECT_AND_RECOVER。设置为DETECT_ONLY时,数据库页面内容不会写入doublewrite buffer,恢复时也不使用doublewrite buffer 修复不完整的页面写入。该设置仅用于检测不完整页面写入。设置为DETECT_AND_RECOVER时,与现有的处理保持一致。

动态配置Redo日志容量

Redo日志现在支持动态设置容量。通过系统变量innodb_redo_log_capacity 可以增加或缩小Redo日志所使用的磁盘容量。InnoDB可以维护32个Redo日志,日志的默认大小为100M。用户配置innodb_redo_log_capacity后,变量innodb_log_files_in_group 和 innodb_log_file_size的值将被忽略。

更改MySQL部分系统表主键中的字段顺序

通过更改,以提高执行CREATE USER,DROP USER,RENAME USER 语句的执行性能 

mysqldump自定义长查询时间

mysqldump增加一个新的选项 -mysqld-long-query-time ,通过该选项,用户可以增加mysqldump查询所允许的经过时间,以便避免写入慢查询日志,从而减少不必要的日志记录。

Error log组件

错误日志组件现在可以在InnoDB存储引擎可用之前启动。这种加载错误日志组件的控件方法通过log_error_services变量定义。

隐式加载错误日志组件具有如下优点:

InnoDB完全可用之前记录的信息是可用的。

它有助于避免日志信息的丢失启动失败。

显式错误日志组件安装使用不再需要安装组件语法。用户只需要将组件添加到log_error_services设置。

 

企业版审计

审计日志增加了查询时间选项,可以记录发送和接收的记录数及时间。

加密函数AES_ENCRYPT() 和 AES_DECRYPT() 支持KDF

KDF(key derivation function)通过将秘钥密码或密码短语等信息传递给函数,用来创建密码学上的强密码。派生的密钥用于加密并解密数据,它仍然保存在MySQL服务器中实例,用户无法访问。强烈推荐使用KDF,因为它提供了比用户指定密码等方式更为简单的方法,及更好的安全性。

 

 

版本:8.0.31

这一次有一些非常有趣的新功能将派上用场,包括 SQL 标准支持,以及 130 多个错误修复。

TL;DR:一些不错的新功能,但没有什么特别之处。

FULL 现在是保留字。

InnoDB 现在支持并行索引构建,这提高了索引构建性能。特别是,现在将排序的索引条目加载到 B 树中是多线程的。

MySQL 服务器的 OpenSSL 库已更新到版本 1.1.1q。

优化器已得到改进,因此当您尝试以下操作时不会抛出旧的 ER_NOT_SUPORTED_YET:

((SELECT a, b, c FROM t ORDER BY a LIMIT 3) ORDER BY b LIMIT 2) ORDER BY c LIMIT 1;

MySQL 现在遵循 SQL 标准中指定的语义,因此较高的外部限制不能覆盖内部较低的限制。这意味着表达式 (SELECT … LIMIT 3) LIMIT 5 最多可以返回三行。

UNION DISTINCT 和 UNION ALL 现在可以以任意组合嵌套。

Performance 和 sys 模式现在公开了 MySQL 8.0.28 中引入的全局和会话内存限制的指标。

MySQL 服务器的离线模式现在需要 CONNECTION_ADMIN 权限以及 SYSTEM_VARIABLES_ADMIN 权限。激活离线模式时,用户具有 CONNECTION_ADMIN 权限的会话保持连接,具有该权限的用户可以与离线服务器实例建立新连接。这意味着可以激活离线模式的管理员不会因为这样做而无意中将自己锁定。

小结 :MySQL 8.0.31有一些小的改进,但没有什么惊天动地的。测试并行索引构建之类的东西需要一些时间。但总的来说,我们似乎从 Oracle 的 MySQL 工程师那里得到了一些切实的改进。

 

 

 

版本:8.0.32

这一个版本主要以错误修复为主,修改了102个Bug,并在一些功能上进行了调整。让我们快速浏览一下:

不带引号的标识符中的第一个字符如果使用美元符号“$”,服务器将发出警告,“ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT”,该使用方式在未来的版本中进行删除,将改变或影响以美元开头的标识符存储的任何数据库、表、视图、列的名称、存储程序,或别名。

不建议用户使用“CLIENT_NO_SCHEMA”标志。客户端将对 mysql_real_connect()指定“CLIENT_NO_SCHEMA”作为“client_flag”的参数。

为了更好地控制压缩到服务器的连接,使用新的压缩控制参数替换以往的参数。由“--compression-algorithms” 替换“--compress”,由“MYSQL_OPT_COMPRESSION_ALGORITHMS” 替换“MYSQL_OPT_COMPRESS”,由“MASTER_COMPRESSION_ALGORITHMS”替换“slave_compressed_protocol”系统变量。

在Windows上,客户端Kerberos身份验证插件现在通过MIT Kerberos支持GSSAPI库。用户可以使用控件支持的新插件选项在SSPI和GSSAPI之间进行选择。

EXPLAIN语句输出的默认格式现在可以进行设置,新增的“explain_format”系统变量与FORMAT选项一样,此变量可以采用值为“TRADITIONAL”、“JSON”或“TREE”。默认值为“TRADITIONAL”。

对于绑定OpenSSL 库的操作系统,链接OpenSSL库用于MySQL Server版本已更新至1.1.1s。

二进制包中包含curl已升级为使用curl7.86.0(非链接到系统的curl库的情况)。

强化内部资源组,对其进行了重构,但仍支持“resource_group_supported”状态变量。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论