【从行到向量】数据库执行引擎的进化之路

为了提高用户在使用 OceanBase 社区版过程中解决问题的效率,前一阵儿 OceanBase 官方推出了 《OceanBase DBA 从入门到实践》系列课程。但是在第七期直播之后,很多用户都反馈在阅读学习笔记的过程中,无法理解计划里类似于 rowset=16 或者 rowset=256 这样的信息所表示的含义。

obclient [test]> create table t1(c1 int, c2 int);
Query OK, 0 rows affected (0.203 sec)

obclient [test]> explain select count(*) from t1 where c1 = 1000;
+------------------------------------------------------------------------------------+
| Query Plan                                                                         |
+------------------------------------------------------------------------------------+
| =================================================                                  |
| |ID|OPERATOR         |NAME|EST.ROWS|EST.TIME(us)|                                  |
| -------------------------------------------------                                  |
| |0 |SCALAR GROUP BY  |    |1       |4           |                                  |
| |1 |└─TABLE FULL SCAN|t1  |1       |4           |                                  |
| =================================================                                  |
| Outputs & filters:                                                                 |
| -------------------------------------                                              |
|   0 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), rowset=16            |
|       group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))])                      |
|   1 - output([T_FUN_COUNT(*)]), filter([t1.c1 = 1000]), rowset=16                  |
|       access([t1.c1]), partitions(p0)                                              |
|       is_index_back=false, is_global_index=false, filter_before_indexback[false],  |
|       range_key([t1.__pk_increment]), range(MIN ; MAX)always true                  |
+------------------------------------------------------------------------------------+
14 rows in set (0.033 sec)

计划里的 rowset 信息和 OceanBase 执行引擎的向量化执行技术相关,我们写了一篇博客,在解答这个用户问题的同时,也顺便大家介绍一下 OceanBase 执行引擎的向量化执行技术,详见:《从行到向量 —— 数据库执行引擎的进化之路》

这篇博客是偏数据库系统概念性的内容,但是不会深入到 OceanBase 中各个算子和表达式的在向量化中的详细设计和实现,大家都能看懂,可以放心阅读~

最后附上两个链接,供大家学习和参考:

8 个赞

大家如果对上面这篇博客或者第七期课程有任何疑问,欢迎在本帖的评论区留言,我们会在第一时间对大家的问题进行回复~

5 个赞

向量数据库可以用来替换什么搜索业务啊

3 个赞

我知道的比较常用的就是通过计算机视觉技术提取图像或视频帧的特征向量,向量数据库用来检索具有相似视觉特征的内容。

2 个赞

我们最近在用向量做知识库搜索方面

2 个赞

哈哈,这个贴子里提到的向量化的 SQL 执行引擎,和您说的向量数据库还真没啥直接关系。

帖子中这篇博客里向量化 SQL 执行引擎的目的是支持批量计算。我理解您说的向量数据库是指通过在数据库里面,支持一种叫做 Vector 或者向量的数据类型,来满足需要进行近似关系计算的业务。

和向量数据库相关的内容,曾经在这个官方精选贴 《【趣事分享】AI 大语言模型:为什么做不对简单数学题?》 中提到。OceanBase 数据库在即将发布的 4.3.3 版本中,就会支持 AI 大模型离不开的向量类型,扩展了向量数据库的能力,敬请您的期待。

3 个赞

专业!

1 个赞