最新发布!MySQL 9.0 的向量 (VECTOR) 类型文档更新

7月1日,MySQL 9.0.0 创新版本, 8.4.1 LTS, 8.0.38 三版齐发。

发版当天安装包已经可以下载,我也在第一时间做了分享:

  • MySQL 9.0.0 新鲜出炉!支持向量类型

当时参考手册还未上线,这两天文档虽已上线,但似乎仍在更新中,大家关注的向量数据类型也从文档中找不到踪影。

不过,在最新版本的文档中 (Document generated on: 2024-07-03 (revision: 78966)),数据类型章节已经添加了 VECTOR 页面。

alt

下面来看看具体描述。

unsetunset新功能unsetunset

https://dev.mysql.com/doc/refman/9.0/en/mysql-nutshell.html

MySQL 9.0 新功能:支持 VECTOR 类型

MySQL 9.0 支持 VECTOR 列类型。向量是一种数据结构,由条目列表(4 字节浮点值)组成,可以表示为二进制字符串值或列表格式的字符串。VECTOR 列声明有最大长度或条目数(在括号中);默认值为 2048,最大值为 16383。

VECTOR_DIM()(也在 MySQL 9.0 中添加)返回向量的长度。提供了转换函数。STRING_TO_VECTOR()(别名:TO_VECTOR())采用向量的列表格式表示并返回二进制字符串表示;VECTOR_TO_STRING()(别名:FROM_VECTOR())执行相反的操作,如下所示:

mysql> SELECT STRING_TO_VECTOR('[2, 3, 5, 7]');
+--------------------------------------------------------------------+
| STRING_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)

unsetunsetVECTORunsetunset

https://dev.mysql.com/doc/refman/9.0/en/vector.html

VECTOR 定义

VECTOR 是一种可以容纳最多指定数量 N 的条目的结构,定义如下:VECTOR(N)

每个条目是一个 4 字节(单精度)浮点值。

默认长度为 2048;最大长度为 16383 个条目。

mysql> create table tv1 (c1 vector);
Query OK, 0 rows affected (0.01 sec)

mysql> show create table tv1\G
*************************** 1. row ***************************
       Table: tv1
Create Table: CREATE TABLE `tv1` (
  `c1` vector(2048) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

mysql> create table tv2 (c1 vector(16384));
ERROR 6137 (HY000): Data size (65536 Bytes, 16384 dimensions) exceeds VECTOR max (65532 Bytes, 16383 dimensions) for column: 'c1'

mysql> create table tv3 (c1 vector(1));
Query OK, 0 rows affected (0.02 sec)

mysql> insert tv3 select to_vector('[1]');
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> select from_vector(c1) from tv3;
+-----------------+
| from_vector(c1) |
+-----------------+
| [1.00000e+00]   |
+-----------------+
1 row in set (0.00 sec)

VECTOR 不能与任何其他类型进行比较。它可以与另一个 VECTOR 进行比较以确定相等性,但无法进行其他比较。

VECTOR 列不能用作任何类型的键,包括:主键,外键,唯一键,分区键。

VECTOR 列也不能用作直方图源。

VECTOR 支持和不支持的函数

VECTOR 值可与 MySQL 字符串函数 BIT_LENGTH()、CHAR_LENGTH()、HEX()、LENGTH() 和 TO_BASE64() 一起使用。其他字符串函数不接受 VECTOR 类型作为参数。

VECTOR 可用作任何加密函数 AES_ENCRYPT()、COMPRESS()、MD5()、SHA1() 和 SHA2() 的参数。任何其他加密函数都不支持将 VECTOR 作为参数类型。

VECTOR 可用作 CASE 运算符和相关流控制函数的参数,包括 COALESCE()、IFNULL()、NULLIF() 和 IF()。

VECTOR 可用作 CAST(expression AS BINARY) 的参数;结果为二进制字符串,内容与 VECTOR 参数相同。不支持使用 CAST 转换为 VECTOR;您可以使用 VECTOR_TO_STRING() 将合适的字符串转换为 VECTOR。

VECTOR 数据类型不能用作除 COUNT[DISTINCT] 之外的聚合函数或窗口函数的参数。

VECTOR 不能用作下列任何类型的函数和运算符的参数:

  • 数字函数和运算符
  • 时间函数
  • 全文搜索函数
  • XML 函数
  • 位函数,例如按位 AND 和 OR
  • JSON 函数

unsetunsetVECTOR 函数unsetunset

https://dev.mysql.com/doc/refman/9.0/en/vector-functions.html

MySQL 9.0 支持 SQL 函数来处理 VECTOR 值。本节介绍了这些函数。

STRING_TO_VECTOR(): 获取符合字符串表示的 VECTOR 列的二进制值 VECTOR_DIM(): 获取向量的长度(即其包含的条目数) VECTOR_TO_STRING(): 获取 VECTOR 列的字符串表示形式,将其值指定为二进制字符串

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

mysql> SELECT VECTOR_DIM(0x0040004000800080);
+--------------------------------+
| VECTOR_DIM(0x0040004000800080) |
+--------------------------------+
|                              2 |
+--------------------------------+
1 row in set (0.00 sec)

unsetunset关键字unsetunset

https://dev.mysql.com/doc/refman/9.0/en/keywords.html

对比 MySQL 8.4,MySQL 9.0 新增关键字:VECTOR

mysql> select * from information_schema.KEYWORDS where word = 'vector';
+--------+----------+
| WORD   | RESERVED |
+--------+----------+
| VECTOR |        0 |
+--------+----------+
1 row in set (0.00 sec)

unsetunsetEnd.unsetunset

简单翻阅了一下源码,向量部分大致就这些内容,这会文档算是补全。

其实还有一块内容,MySQL Connector 中关于 VECTOR 的部分,这个我们下期再续。


unsetunset🌻 往期精彩 ▼unsetunset

[Oracle]

  • Oracle 数据库全面升级为 23ai
  • python-oracledb 已率先支持 Oracle 23ai
  • 一文带你了解 Oracle 23ai 新特性 Vector 的基础用法

[MySQL]

  • 「合集」MySQL 8.x 系列文章汇总
  • 如何选择适合的 MySQL Connector/J 版本
  • MySQL 8.4.0 LTS 发布 (MySQL 第一个长期支持版本)

[TiDB]

  • 星辰考古:TiDB v3.x 忆水木
  • 星辰考古:TiDB v2.x 回忆杀
  • 敢于公布BUG的国产数据库才是好数据库

[PG]

  • [RL9] Rocky Linux 9.4 搭载 PG 16.1
  • 即将告别PG 12,建议升级到PG 16.3版本
  • 后 EL 7 时代,PG 16 如何在 CentOS 7 上运行

-- / END / --

👉 这里可以找到我

  • 微信公众号:少安事务所 (mysqloffice)
  • 墨天轮: 严少安
  • PGFans: 严少安
  • ITPUB: 少安事务所
  • TiDB 专栏: @ShawnYan

如果这篇文章为你带来了灵感或启发,就请帮忙点『』or『在看』or『转发』吧,感谢!ღ( ´・ᴗ・` )~

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/769965.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RPM包管理-rpm命令管理

1.RPM包命令原则 所有的rpm包都在光盘中 例:httpd-2.2.15-15.e16.centos.1.i686.rpm httpd 软件包名 2.2.15 软件版本 15 软件发布的次数 e16.centos 适合的Linux平台 i686 适合的硬件平台…

springboot酒店管理系统-计算机毕业设计源码93190

目 录 摘 要 1 绪论 1.1 选题背景与意义 1.2开发现状 1.3论文结构与章节安排 2 酒店管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析…

【计算机视觉】基于OpenCV的直线检测

直线检测原理 霍夫变换是图像处理必然接触到的一个算法,它通过一种投票算法检测具有特定形状的物体,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果,该方法可以进行圆,直线,椭…

docker安装ElasticSearchKibana

本文参考以下两篇文章 ✅ElasticSearch&Kibana 部署 云效 Thoughts 企业级知识库 (aliyun.com) docker安装ElasticSearch&Kibana - 飞书 安装elasticsearch 使用docker下载es: docker pull elasticsearch:8.13.0 挂载配置 创建挂在文件目录 mkdir…

Hadoop3:集群压测-读写性能压测

一、准备工作 首先,我们要知道,平常所说的网速和文件大小的MB是什么关系。 100Mbps单位是bit;10M/s单位是byte ; 1byte8bit,100Mbps/812.5M/s。 测试 配置102、103、104虚拟机网速 102上用Python开启一个文件下载服务&#x…

职升网:注会考试科目搭配策略建议!

一、CPA考试特点概述 CPA(注册会计师)考试是一个综合性极强的考试,分为专业阶段和综合阶段。专业阶段涵盖了《会计》、《审计》、《财务成本管理》、《税法》、《经济法》和《公司战略与风险管理》六大科目。这些科目不仅知识点繁多&#xf…

轻松搞定Docker!教你一键删除所有镜像!

大家好,我是CodeQi! 一位热衷于技术分享的码仔。 Docker 是一种流行的容器化平台,它提供了一种轻量级且可移植的方式来打包、分发和运行应用程序。 在使用 Docker 进行应用程序开发和部署时,我们通常会创建和使用各种镜像。然而,随着时间的推移,我们可能会积累大量的镜…

Ubuntu TensorRT安装

什么是TensorRT 一般的深度学习项目,训练时为了加快速度,会使用多 GPU 分布式训练。但在部署推理时,为了降低成本,往往使用单个 GPU 机器甚至嵌入式平台(比如 NVIDIA Jetson)进行部署,部署端也…

Keil用ST-LINK下载STM32程序后不自动运行

之后程序可以运行了,但是串口还没有输出,在debug模式下都是ok的。

Richtek立锜科技车规级器件选型

芯片按照应用场景,通常可以分为消费级、工业级、车规级和军工级四个等级,其要求依次为军工>车规>工业>消费。 所谓“车规级元器件”--即通过AEC-Q认证 汽车不同于消费级产品,会运行在户外、高温、高寒、潮湿等苛刻的环境&#xff0c…

重磅!首本大模型中文新书发布,复旦最新《大规模语言模型·从理论到实践》,理论+代码

复旦大学自然语言处理实验室张奇教授、桂韬研究员、郑锐博士生以及黄萱菁教授结合之前在自然语言处理领域研究经验,以及分布式系统和并行计算的教学经验,通过在大语言模型实践和理论研究的过程中,历时 8 个月完成本书《大规模语言模型从理论到…

【数学建模】 数据处理与拟合模型

文章目录 数据处理与拟合模型1. 数据与大数据1.1 什么是数?什么是数据?1.2 数据与大数据1.3 数据科学的研究对象 2. 数据的预处理2.1 为什么需要数据预处理2.2 使用pandas处理数据的基础2.3 pandas常用方法总结2.4 数据的规约1) 维度规约2) 数值规约3) 数…

Excel中按列的首行字母顺序,重新排列(VBA脚本)

排序前 要求对4列数据按照第一行abcd的顺序排列 VB脚本如下: 要使用这个脚本,请按照以下步骤操作: 打开Excel,然后按下 Alt F11 打开VBA编辑器。在VBA编辑器中,选择“插入” > “模块”,在打开的模块…

LineageOs-21.0系统编译问题

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

35 智能指针

目录 为什么需要智能指针?内存泄露智能指针的使用及原理c11和boost中智能指针的关系RAII扩展学习 1. 为什么需要智能指针? 下面我们先分析一下下面这段程序有没有什么内存方面的问题? int div() {int a, b;cin >> a >> b;if (…

android deep links即scheme uri跳转以及googlePlay跳转配置

对于googlePlay的Custom URL就是googlePlay上APP网址: https://play.google.com/store/apps/details?idcom.yourapp如果是国内一些应用,则考虑market://包名等方式,自行百度。 对于Android URI Scheme: 首先需要在Manifest xm…

idea集成uglifycss压缩混淆css

Uglifycss介绍 https://www.npmjs.com/package/uglifycss 命令行 $ uglifycss [options] [filename] [...] > output 选项: --max-line-len n每个字符添加一个换行符(大约); 表示无换行符,并且是默认值n0 --expand-vars扩…

ESP32CAM物联网教学04

ESP32CAM物联网教学04 给小车配个显示屏 小智决定给小车增加一块显示屏,让小车看起来更好看一些。 点灯物联控制小车的行驶方向 淘宝上面可以使用的液晶显示屏种类非常多,(输入OLED搜索)经过挑选,选中了这一块&#…

JAVA 发送短信信息工具类(腾讯云)

发送短信信息工具类 import cn.hutool.core.collection.CollUtil; import com.tencentcloudapi.common.Credential; import com.tencentcloudapi.common.exception.TencentCloudSDKException; import com.tencentcloudapi.sms.v20210111.SmsClient; import com.tencentcloudapi…

如何使用VScode创建和上传Arduino项目

Visual Studio Code (VS Code) 是一种非常流行的通用集成开发环境 (IDE)。IDE 是一种将文本编辑器、编程界面、调试视图和项目管理集成在一个地方的软件。这个开源项目由微软领导,可以在所有操作系统上运行。使 VS Cod…