谈谈MySQL 9.0 中的新增功能,支持JavaScript存储程序,弃用SHA-1

举报
wljslmz 发表于 2026/02/24 10:18:54 2026/02/24
【摘要】 MySQL 作为全球最受欢迎的开源数据库管理系统之一,一直在不断地发展和演进。2024年7月,Oracle 推出了 MySQL 9.0,这是一个具有众多创新功能和改进的新版本。 Vector 数据类型Vector 数据类型的引入是 MySQL 9.0 中的一大亮点。向量(Vector)在机器学习、数据科学和高性能计算中有着广泛的应用。MySQL 通过支持新的 Vector 数据类型,使其在处...

MySQL 作为全球最受欢迎的开源数据库管理系统之一,一直在不断地发展和演进。2024年7月,Oracle 推出了 MySQL 9.0,这是一个具有众多创新功能和改进的新版本。

Vector 数据类型

Vector 数据类型的引入是 MySQL 9.0 中的一大亮点。向量(Vector)在机器学习、数据科学和高性能计算中有着广泛的应用。MySQL 通过支持新的 Vector 数据类型,使其在处理高维数据和复杂计算方面的能力得到了显著增强。

Vector 数据类型允许用户存储和操作多维向量。使用 Vector 数据类型,用户可以更高效地进行批量处理、并行计算和复杂查询。例如,在图像处理、自然语言处理等领域,向量可以用于表示图像特征、文本特征等。

向量数据类型的定义和操作可以通过标准的 SQL 语句完成。例如:

CREATE TABLE vectors (
    id INT AUTO_INCREMENT PRIMARY KEY,
    feature_vector VECTOR(256)
);

INSERT INTO vectors (feature_vector) VALUES
    (VECTOR(1.0, 0.0, 0.5, ..., 0.3)),
    (VECTOR(0.2, 0.1, 0.0, ..., 0.4));

用户可以利用 MySQL 的查询功能对向量进行操作,如计算向量之间的距离、聚类等。

JavaScript 存储程序

JavaScript 存储程序的引入是 MySQL 企业版中的一个重要新功能。这个功能允许用户使用 JavaScript 语言编写存储过程和函数,从而为数据库编程提供了更多的灵活性和可能性。

JavaScript 存储程序是一种用 JavaScript 编写的存储过程或函数,它可以调用 SQL 语句,也可以被 SQL 语句调用。这种双向调用机制极大地增强了数据库编程的灵活性和功能性。

在 MySQL 9.0 中,JavaScript 存储程序的实现基于 MySQL 企业版的扩展功能。用户可以使用 MySQL 提供的内置 JavaScript 引擎来编写和执行 JavaScript 存储程序。例如:

CREATE FUNCTION calculate_total_price(item_id INT, quantity INT) RETURNS DOUBLE
LANGUAGE JAVASCRIPT
BEGIN
    var unit_price = 0;
    var result = db.query("SELECT price FROM items WHERE id = ?", [item_id]);
    if (result.length > 0) {
        unit_price = result[0].price;
    }
    return unit_price * quantity;
END;

上述示例展示了如何创建一个 JavaScript 存储函数,该函数根据商品 ID 和数量计算总价。

JavaScript 存储程序适用于需要复杂逻辑处理的场景。例如,在电子商务应用中,用户可以使用 JavaScript 存储程序实现购物车计算、订单处理等复杂业务逻辑。

库和编译器更新

MySQL 9.0 转向了较新版本的库和编译器,包括 Linux 8 和 9 上的 GCC13 以及 Boost 1.85。这些更新不仅提升了 MySQL 的性能,还增强了其安全性和稳定性。

使用更新的库和编译器,MySQL 9.0 在处理效率、内存管理和并发控制方面有了显著提升。例如,GCC13 引入了许多新的优化技术,使得编译后的二进制文件运行速度更快,占用资源更少。

虽然这些更新带来了性能提升,但也要求用户在升级时注意与旧版本的兼容性问题。特别是对于自定义编译的用户,需要确保所有依赖库和编译器版本的一致性。

事件调度程序改进

MySQL 9.0 对事件调度程序进行了改进,用户现在可以在事件调度程序中准备 SQL 语句,如 CREATE EVENTALTER EVENTDROP EVENT

事件调度程序是一种用于在预定时间或间隔执行任务的机制。在数据库管理中,事件调度程序常用于自动化数据备份、定期报告生成等任务。

在 MySQL 9.0 中,用户可以更加灵活地管理和调度事件。例如:

CREATE EVENT my_event
ON SCHEDULE EVERY 1 HOUR
DO
BEGIN
    CALL update_statistics();
END;

上述示例展示了如何创建一个每小时运行一次的事件,该事件调用存储过程 update_statistics

这些改进使得事件调度程序更加易用和强大,适用于需要定时任务的各种应用场景,如数据同步、日志清理等。

弃用与移除功能

在引入新功能的同时,MySQL 9.0 也移除了部分过时和不安全的功能,以确保系统的安全性和可靠性。

移除 SHA-1

SHA-1 是一种已被证实不安全的哈希算法。在 MySQL 9.0 中,SHA-1 相关的功能已被彻底移除,服务器现在拒绝来自不具备 CLIENT_PLUGIN_AUTH 功能的旧客户端程序的 mysql_native 身份验证请求。

用户账户密码更改

在升级到 9.0 之前,用户必须将 8.0 和 8.4 中的用户账户从 mysql_native_password 更改为 caching_sha2_password。这不仅提高了密码的安全性,还增强了系统的整体防护能力。

优化器中的更改

在优化器中,ER_SUBQUERY_NO_1_ROW 已从包含 IGNORE 关键字的语句忽略的错误列表中删除。这意味着,如果包含 IGNORE 关键字的 UPDATEDELETEINSERT 语句包含带有生成多行的标量子查询的 SELECT 语句,这些语句将引发错误。

MySQL 9.0 作为一个创新版本,引入了许多新功能和改进,这些变化不仅提升了 MySQL 的性能和功能,还增强了其安全性和可用性。向量数据类型的支持、JavaScript 存储程序的引入、库和编译器的更新以及事件调度程序的改进,都是 MySQL 9.0 的亮点功能。

未来,MySQL 将继续保持快速的更新节奏,每三个月发布一个版本,每两年发布一个主要 LTS 版本。根据 Oracle 的计划,2024 年 10 月将发布 MySQL 8.4.2 LTS 和 MySQL 8.0.39 的错误和安全修复版本,以及 MySQL 9.1 Innovation 版本,届时将引入更多新功能和改进。

通过不断的创新和改进,MySQL 正在逐步满足各种复杂应用场景的需求,继续引领开源数据库领域的发展。对于开发者和企业用户来说,了解和掌握这些新功能,可以帮助他们更好地利用 MySQL 提供的强大功能和高效性能,从而实现更卓越的数据管理和应用开发。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。