MySQL 9.1 正式发布!作为最新的开源关系型数据库管理系统,新版本带来了许多改进、新功能以及一些弃用的功能。
MySQL 9.1 重要更新
触发器
以前,每次访问表时,相关触发器都会被完全加载和解析,即使是简单的SELECT
操作也是如此。这种做法不仅浪费内存,还增加了不必要的执行时间。
在 MySQL 9.1 中,这一问题得到了解决。新版本采用了两阶段处理:首先只读取触发器的元数据,只有在真正需要时(例如修改数据)才进行解析。这一改变大大减少了只读查询的资源消耗,提升了整体性能。
此外,MySQL 9.1 还新增了几个服务器状态变量,如Table_open_cache_triggers_hits
和Table_open_cache_triggers_misses
,可以帮助管理员更好地监控触发器缓存的使用情况,从而更清晰地了解系统运行状况。
EXPLAIN 命令
EXPLAIN
命令现在提供了更详细的查询执行计划信息,包括多范围读取、半连接策略以及格式一致的条件字符串。这些改进让开发人员能更好地理解查询性能,从而更有效地优化数据库。
CREATE VIEW 语句
CREATE VIEW
语句现在支持IF NOT EXISTS
子句。这个小改动带来了不小的便利,让用户可以放心地尝试创建视图,而不用担心它是否已经存在。如果视图已经存在,系统会友好地发出警告,而不是抛出错误。
CREATE DATABASE 和 DROP DATABASE 语句
MySQL 9.1 引入了崩溃安全的CREATE DATABASE
和DROP DATABASE
语句。只要表使用支持原子 DDL 操作的存储引擎(如 InnoDB),数据库的创建和删除就可以是完全事务性的。即使服务器意外关闭或操作过程中出错,也能避免数据不一致的问题。
灵活性
MySQL 9.1 现在支持在 JavaScript 存储程序中使用VECTOR
数据类型。这一新特性让VECTOR
值可以作为输入和输出参数使用,对于需要进行高级向量操作的应用程序来说,这是一个不小的改进。
企业级用户
MySQL Enterprise 版本新增了复制应用程序指标,显著提升了复制过程的监控能力。DBA 现在可以更有效地跟踪复制进度,收集有用的统计信息,让故障排除和维护稳定的复制环境变得更加轻松。
MySQL 9.1 支持 OpenID Connect,增强了身份验证的灵活性,实现了与现代单点登录系统的无缝集成。这一功能特别适合大规模环境,让用户管理更加便利。
新增的 Option Tracker 组件能够帮助监控 MySQL 服务器的选项,包括已安装插件和组件相关的选项。为 DBA 提供了服务器上所有启用选项的清晰视图,方便进行系统配置和优化。
弃用旧功能
MySQL 9.1 在带来许多实用新功能的同时,也弃用并移除了一些旧功能。开发者和 DBA 应及时审查应用程序,避免使用到弃用功能,并在升级到 MySQL 9.1 之前进行必要调整,确保兼容性。
MySQL 9.0 重要更新
增强 JSON 数据处理能力
MySQL 9.0 的一大功能亮点是对 JSON 数据的高级处理。现在,可以直接将EXPLAIN ANALYZE
命令生成的 JSON 输出保存到用户变量中,极大简化了查询调试和优化流程,让开发者能够更轻松地操控和分析执行计划。语法如下:
EXPLAIN ANALYZE FORMAT=JSON INTO @variable select_stmt
预备语句功能扩展
新版本扩展了预备语句的功能,增加了对数据定义语言(DDL)命令的支持,例如CREATE EVENT
、ALTER EVENT
和DROP EVENT
。这一更新让数据库管理脚本更加动态灵活,但需要注意的是,它不支持位置参数,需要将不同输入源的文本组合起来使用。
性能模式新增两张表
为了帮助用户深入了解数据库操作,MySQL 9.0 在性能模式下新增了variables_metadata
和global_variable_attributes
两张表,详细记录了系统变量的类型、作用域和允许的值,对于性能微调和维护至关重要。
MySQL 9.0 弃用了性能模式variables_info
表中的MIN_VALUE
和MAX_VALUE
列,并使用variables_metadata
表中的相似列进行取代。
安全性升级
弃用了 MySQL 8.0 版本中的mysql_native_password
认证插件。这意味着,服务器将拒绝来自不支持CLIENT_PLUGIN_AUTH
的旧客户端程序的认证请求,进一步加强了 MySQL 的安全性,并鼓励用户采用更安全的认证方法。
MySQL 8.3 功能更新
支持标签化 GTID 的复制功能
MySQL 8.3 版本的一大亮点是加强了复制和组复制功能,引入了支持标签的全局事务标识符(GTID)。此项改进能让事务集的分组和识别更加直观。
新的 GTID 格式UUID:TAG:NUMBER
提供了一种独特的命名方式,便于将 GTID 与特定的事务组相关联。这样可以帮助管理员区分数据操作和管理操作,从而提升复制过程的效率和有序性。
为此,该版本新增了TRANSACTION_GTID_TAG
权限,它允许设置 GTID 值,让管理员能够控制权限分配,优化事务管理。
增强的 JSON EXPLAIN 格式
MySQL 8.3 引入了一个新的explain_json_format_version
服务器系统变量,它允许管理员在EXPLAIN FORMAT=JSON
命令中,在两种不同的 JSON 输出格式之间进行选择。这一特性保证了软件与 MySQL 优化器未来版本的兼容性,增强了长期使用的便利性。
线程池插件的增强
线程池插件现在能够在 MySQL 性能模式中提供更多信息。新增的表格和列项能够提供有关线程池连接和状态的详尽信息,有助于更有效地分析性能。
其他值得关注的变化
- 系统变量
binlog_transaction_dependency_tracking
的默认值已被更改为WRITESET
,表明该功能正在逐步被淘汰。 - MySQL 8.3 引入了
WITH_LD
CMake 选项,让管理员可以选择自己的链接器,同时对 MySQL 企业级数据掩码和去标识化功能进行了增强。 - 最后,MySQL 性能模式增加了关于线程池连接的详细信息,这对性能调优是非常有价值的资源。
删减功能
在 MySQL 8.3 版本中,也包括了对几项功能和函数的移除,这突出了数据库实践朝着更高效、更现代化方向的转变。
- 一些关键的 C API 函数,比如
mysql_kill()
、mysql_list_fields()
等,已被移除,建议采用其他方式来执行类似操作。 - 用于清理主机名内部缓存的
FLUSH HOSTS
命令(之前已经被弃用),也正式从系统中移除了。管理员现在需要通过其他方法来清理主机缓存。 - 还有一些复制和服务器的相关选项,例如
–slave-rows-search-algorithms
和–log_bin_use_v1_events
也已被移除,引导管理员采用更有效、更现代的操作方法。
最后,MySQL 8.3 在基于行的日志记录中,对冲突检查的 writesets 使用进行了限制。表明了对二进制日志事务依赖性跟踪方法的精细化调整。
最新评论
需要管理员权限
直接降级 Windows10 一次性永久解决问题
我按照作者的方法成功了
使用PowerShell修改失败,禁止访问