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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 【7月更文挑战第29天】

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));
AI 代码解读

用户可以利用 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;
AI 代码解读

上述示例展示了如何创建一个 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;
AI 代码解读

上述示例展示了如何创建一个每小时运行一次的事件,该事件调用存储过程 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 提供的强大功能和高效性能,从而实现更卓越的数据管理和应用开发。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
2682
分享
相关文章
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
Python入门:8.Python中的函数
### 引言 在编写程序时,函数是一种强大的工具。它们可以将代码逻辑模块化,减少重复代码的编写,并提高程序的可读性和可维护性。无论是初学者还是资深开发者,深入理解函数的使用和设计都是编写高质量代码的基础。本文将从基础概念开始,逐步讲解 Python 中的函数及其高级特性。
Python入门:8.Python中的函数
Python入门:6.深入解析Python中的序列
在 Python 中,**序列**是一种有序的数据结构,广泛应用于数据存储、操作和处理。序列的一个显著特点是支持通过**索引**访问数据。常见的序列类型包括字符串(`str`)、列表(`list`)和元组(`tuple`)。这些序列各有特点,既可以存储简单的字符,也可以存储复杂的对象。 为了帮助初学者掌握 Python 中的序列操作,本文将围绕**字符串**、**列表**和**元组**这三种序列类型,详细介绍其定义、常用方法和具体示例。
Python入门:6.深入解析Python中的序列
Python入门:3.Python的输入和输出格式化
在 Python 编程中,输入与输出是程序与用户交互的核心部分。而输出格式化更是对程序表达能力的极大增强,可以让结果以清晰、美观且易读的方式呈现给用户。本文将深入探讨 Python 的输入与输出操作,特别是如何使用格式化方法来提升代码质量和可读性。
Python入门:3.Python的输入和输出格式化
Python入门:1.Python介绍
Python是一种功能强大、易于学习和运行的解释型高级语言。由**Guido van Rossum**于1991年创建,Python以其简洁、易读和十分工程化的设计而带来了庞大的用户群体和丰富的应用场景。这个语言在全球范围内都被认为是**创新和效率的重要工具**。
Python入门:1.Python介绍
Python入门:9.递归函数和高阶函数
在 Python 编程中,函数是核心组成部分之一。递归函数和高阶函数是 Python 中两个非常重要的特性。递归函数帮助我们以更直观的方式处理重复性问题,而高阶函数通过函数作为参数或返回值,为代码增添了极大的灵活性和优雅性。无论是实现复杂的算法还是处理数据流,这些工具都在开发者的工具箱中扮演着重要角色。本文将从概念入手,逐步带你掌握递归函数、匿名函数(lambda)以及高阶函数的核心要领和应用技巧。
Python入门:9.递归函数和高阶函数
Python入门:7.Pythond的内置容器
Python 提供了强大的内置容器(container)类型,用于存储和操作数据。容器是 Python 数据结构的核心部分,理解它们对于写出高效、可读的代码至关重要。在这篇博客中,我们将详细介绍 Python 的五种主要内置容器:字符串(str)、列表(list)、元组(tuple)、字典(dict)和集合(set)。
Python入门:7.Pythond的内置容器
Python入门:2.注释与变量的全面解析
在学习Python编程的过程中,注释和变量是必须掌握的两个基础概念。注释帮助我们理解代码的意图,而变量则是用于存储和操作数据的核心工具。熟练掌握这两者,不仅能提高代码的可读性和维护性,还能为后续学习复杂编程概念打下坚实的基础。
Python入门:2.注释与变量的全面解析
Python入门:4.Python中的运算符
Python是一间强大而且便捷的编程语言,支持多种类型的运算符。在Python中,运算符被分为算术运算符、赋值运算符、复合赋值运算符、比较运算符和逻辑运算符等。本文将从基础到进阶进行分析,并通过一个综合案例展示其实际应用。
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
334 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等