MySQL 9.0 “创新版” 已支持向量,为何甲骨文却 “偷偷摸摸” 地宣布?
2024-07-05 14:55 阅读(308)

MySQL 9.0.0 Innovation(俗称 “创新版”)已于近日发布。


下载地址:https://dev.mysql.com/downloads/mysql/


从 MySQL 8.1 开始,官方启用了新的版本模型:MySQL 创新版 (Innovation) 和长期支持版 (LTS)。


根据介绍,两者的质量都已达到可用于生产环境级别。区别在于:


如果希望尝试最新的功能和改进,并喜欢与最新技术保持同步,那么 MySQL 创新版本可能最适合您。

该版本非常适合在快节奏的开发环境中工作的开发人员和 DBA,其中有高水平的自动化测试和现代的持续集成技术,可以实现更快的升级周期。

如果您的环境需要继续保持已经固定的行为,那么 LTS 版本就是您的不二之选。这些版本仅包含必要的修复,因此可以减少数据库软件行为变更带来的风险。

对于 MySQL 9.0 “创新版”,最值得关注的新特性莫过于支持向量数据类型,字段类型名称为 VECTOR,可以使 to_vector/string_to_vector/from_vector/vector_dim 等函数操作向量数据。


MySQL 9.0 的 Release Notes 写道:


此版本中添加了对 VECTOR 列类型的支持。向量 (Vector) 是一种数据结构,由条目列表(4 字节浮点值)组成,可以表示为二进制字符串值或列表格式的字符串。


VECTOR 列声明有最大长度或条目数(在括号中);默认为 2048,最大为 16383。


下面示例是使用 CREATE TABLE 创建包含 VECTOR 列的 InnoDB 表:

mysql> CREATE TABLE v1 (c1 VECTOR(5000));
Query OK, 0 rows affected (0.03 sec)

操作向量的相关函数介绍:


VECTOR_DIM() 函数用于获取向量的长度

STRING_TO_VECTOR()(别名 TO_VECTOR())函数采用向量的列表格式表示形式,并返回二进制字符串表示形式

VECTOR_TO_STRING()(别名 FROM_VECTOR())函数执行和上面相反的操作

mysql> SELECT STRING_TO_VECTOR('[2, 3, 5, 7]');
+------------------------------------------------------+
| TO_VECTOR('[2, 3, 5, 7]')                            |
+------------------------------------------------------+
| 0x00000040000040400000A0400000E040                   |
+------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT VECTOR_TO_STRING(0x00000040000040400000A0400000E040);
+------------------------------------------------------+
| VECTOR_TO_STRING(0x00000040000040400000A0400000E040) |
+------------------------------------------------------+
| [2.00000e+00,3.00000e+00,5.00000e+00,7.00000e+00]    |
+------------------------------------------------------+
1 row in set (0.00 sec)