tikv是否支持select sum(a,b) as sum from table 这样的计算下推

  • 【TiDB 版本】:4.0
  • 【问题描述】:请问tikv是否支持select sum(a,b) as sum from table 这样的计算下推?火山模型和向量模型,我们应该选哪个?我们想实现自定义的计算表达式,主要目的是想减少大量的网络传输。

您好:

     1. 请问 sum(a,b)指的是什么? 你是想问sum(a+b)吗? 
     2. 使用火山还是向量模型是优化器决定的,你是希望自己定义走哪个模型?

我是想在tikv端将计算结果返回,比如sum(a,b)就是将a和b两列相加的结果返回。 那么请问如何通过coprocessor做到将列的计算结果返回?

对于 sum(a + b) 来说现在 cop 的逻辑是由由 TiKV 计算 sum(a + b) 的结果,最后由 TiDB 将所有从 TiKV 返回的 局部和加起来得到最后的和。 如果您是想添加现在没有内建的函数并且让他下推的话,大概是这篇文章里 https://pingcap.com/blog-cn/30mins-become-contributor-of-tikv/ 说的方法。

好的,谢谢,我们正在尝试写一些向量相关的函数。

您好: 开发类问题,欢迎加入,多谢

我感觉您的意思是 select a+b from t,想让这个 a+b 在 cop 端计算吧? 如果是这个问题的话,目前 TiDB 还没有支持将这种表达式的计算下推到 TiKV 层。

如果想要支持这个方法,需要让 coprocessor 支持 Projection 算子,并且在 TiDB 的查询优化器中将这个 Projection 下推到 TableReader(or IndexReader, IndexLookUpReader) 以下。

在 4.0 版本还没有支持,但是后续有支持的计划。

好吧,您猜对了,下次表述清楚点。 我看到proto中有Projection的定义,后来看tikv源码,才发现没有实现,谢谢回复。

:call_me_hand::call_me_hand::call_me_hand:,如有问题可以开新帖提问哦~