您现在的位置是:首页 > 文章详情

MySQL 9.2.0 有哪些功能新增、弃用和删除?

日期:2025-01-22点击:187

本文来源:https://dev.mysql.com/doc/refman/9.2/en/mysql-nutshell.html
由「爱可生开源社区」翻译:https://mp.weixin.qq.com/s/gNRaHz-1Eq_PKsg792uwjg


 2025 年 1 月 21 日,MySQL 9.2.0 版本发布!

根据 MySQL 版本发布计划,MySQL 9.2.0 是一个创新版,那么我们来看一下有哪些功能新增,弃用和删除。

1一、新增或更改的功能

CREATE_SPATIAL_REFERENCE_SYSTEM 权限

MySQL 9.2.0 引入了 CREATE_SPATIAL_REFERENCE_SYSTEM 权限,该权限允许用户执行任何以下声明:

  • CREATE SPATIAL REFERENCE SYSTEM

  • CREATE OR REPLACE SPATIAL REFERENCE SYSTEM

  • DROP SPATIAL REFERENCE SYSTEM

目前,若没有此权限(或 SUPER 权限)的情况下执行以上列出的任何语句,都会引发错误:

 Error number: 6427; Symbol: ER_CMD_NEED_SUPER_OR_CREATE_SPATIAL_REFERENCE_SYSTEM; SQLSTATE: HY000 Message: You need the SUPER or CREATE_SPATIAL_REFERENCE_SYSTEM privilege for command '%s' 

更多信息:https://dev.mysql.com/doc/refman/9.2/en/privileges-provided.html


JavaScript 库

多语言引擎组件(MLE)现在支持可重用的 JavaScript 库,其中包含可以从其他 JavaScript 存储程序调用的函数。此类函数必须使用导出 keyword 标记为可导入。

函数库可以使用 MySQL 9.2.0 中添加的 CREATE LIBRARYDROP LIBRARY SQL 语句进行管理;它们可以包含在其他存储的 JavaScript 程序中,并在同一版本中添加 USING 子句到 CREATE FUNCTIONCREATE PROCEDUREUSING 支持一个或多个库名称的列表。

CREATE LIBRARY 语句在给定数据库中创建一个新的 JavaScript 库,给定一个或多个 JavaScript 函数的代码。JavaScript 代码是在创建时解析并检查有效性;如果代码包含任何错误,则拒绝 CREATE LIBRARYDROP LIBRARY 删除给定的 JavaScript 库。

更多信息:https://dev.mysql.com/doc/refman/9.2/en/srjs-libraries.html

用于 JS 的 SQL 存储例程和会话变量 API

MySQL 9.2.0 及以上版本的 MLE 组件支持访问从 JavaScript 例程到用户定义的函数,过程和变量。

现在可以使用 Schema 方法访问 MySQL 存储的函数和过程 getFunction()getProcedure() 的这些函数中的每一个都返回一个可以使用参数 Function 对象。

此外,现在可以访问 MySQL 用户变量直接作为 JavaScript 全局变量的属性 Session 对象。JavaScript 访问 Session Variables,了解更多信息 信息和示例。

MySQL 9.2.0 版本还增加了对直接访问多个 MySQL 内置函数的支持,如下所示:

  • rand():等同于 MySQL RAND()

  • sleep():等同于 MySQL SLEEP()

  • uuid():等同于 MySQL UUID()

  • isUUID():等同于 MySQL IS_UUID()

所有这些函数都可以作为全局 MySQL 对象的方法调用。

更多信息: https://dev.mysql.com/doc/refman/9.2/en/srjsapi-mysql.html

JavaScript 事务 API

从 MySQL 9.2.0 开始,MLE 组件提供了一个 JavaScript MySQL 事务 API,它执行大多数 MySQL 事务性 SQL 语句的操作,例如 作为 START TRANSACTIONCOMMITROLLBACKSET AUTOCOMMIT。对 Savepoints 也支持。

这项工作还实现了一个 SqlError 对象。

更多信息https://dev.mysql.com/doc/refman/9.2/en/srjsapi-transactions.html

JavaScript ENUM 和 SET 支持

MySQL 9.2.0 及更高版本中的 JavaScript 存储例程的参数支持 MySQL 的 ENUM 和 SET 类型。

更多信息: https://dev.mysql.com/doc/refman/9.2/en/srjs-data-arguments.html#srjs-enum-set-conversion

EXPLAIN FORMAT=JSON

MySQL 9.2.0 在输出中添加格式版本信息 EXPLAIN FORMAT=JSON 设置 JSON 格式版本时设置为 2。

要设置格式版本,设置 explain_json_format_version=2。输出如下:

 mysql> EXPLAIN FORMAT=JSON SELECT 1\G *************************** 1. row *************************** EXPLAIN: {   "query": "/* select#1 */ select 1 AS `1`",   "query_plan": {     "operation": "Rows fetched before execution",     "access_type": "rows_fetched_before_execution",     "estimated_rows": 1.0,     "estimated_total_cost": 0.0,     "estimated_first_row_cost": 0.0   },   "query_type": "select",   "json_schema_version": "2.0" } 1 row in set (0.00 sec) 

此语句的输出不包含任何格式 version 信息时 explain_json_format_version 为 1,如下所示:

 mysql> SET explain_json_format_version=1; Query OK, 0 rows affected (0.00 sec) mysql> SELECT @@explain_json_format_version; +-------------------------------+ | @@explain_json_format_version | +-------------------------------+ |                             1 | +-------------------------------+ 1 row in set (0.00 sec) mysql> EXPLAIN FORMAT=JSON SELECT 1\G *************************** 1. row *************************** EXPLAIN: {   "query_block": {     "select_id": 1,     "message": "No tables used"   } } 1 row in set, 1 warning (0.00 sec) 

更多信息:https://dev.mysql.com/doc/refman/9.2/en/explain.html#explain-execution-plan

2弃用的功能

以下功能在 MySQL 9.2 中已弃用 ,并且可能会在未来的系列中删除。替代方案如下所示,请尽快更新。

对于使用 MySQL 9.2 中已弃用的功能且已在更高版本的 MySQL 版本中删除的应用程序,语句在从 MySQL 9.2 源复制到运行更高版本的副本时可能会失败,或者可能对源和副本产生不同的影响。为避免此类问题,应修改使用 9.2 中已弃用功能的应用程序以避免这些问题,并尽可能使用替代方法。

函数(已启用)

  • version_tokens_delete()

  • version_tokens_edit()

  • version_tokens_lock_exclusive()

  • version_tokens_lock_shared()

  • version_tokens_set()

  • version_tokens_show()

  • version_tokens_unlock()

权限

  • VERSION_TOKEN_ADMIN

系统变量

  • version_tokens_session

  • version_tokens_session_number

3删除的功能

以下功能已过时,并已在 MySQL 9.2.0 中删除。

关键字限制

BINLOG 关键字现在受到限制,不能再作为 MySQL 存储例程或存储函数中的标签使用。在升级到 MySQL 9.2 之前,您应该相应地更新任何受影响的应用程序。

更多信息:https://dev.mysql.com/doc/refman/9.2/en/keywkeywordsords.html

原文链接:https://www.oschina.net/news/330959
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章