- 【TiDB 版本】:4.0
- 【问题描述】:请问tikv是否支持select sum(a,b) as sum from table 这样的计算下推?火山模型和向量模型,我们应该选哪个?我们想实现自定义的计算表达式,主要目的是想减少大量的网络传输。
1 个赞
您好:
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/ 说的方法。
好的,谢谢,我们正在尝试写一些向量相关的函数。
您好: 开发类问题,欢迎加入,多谢
- 在 TiKV 社区 或 TiDB 社区 的 Slack 或微信群中交流讨论
- 加入 Coprocessor SIG 详细讨论 Coprocessor 模块
- 查看 代码资料指引
我感觉您的意思是 select a+b from t,想让这个 a+b 在 cop 端计算吧? 如果是这个问题的话,目前 TiDB 还没有支持将这种表达式的计算下推到 TiKV 层。
如果想要支持这个方法,需要让 coprocessor 支持 Projection 算子,并且在 TiDB 的查询优化器中将这个 Projection 下推到 TableReader(or IndexReader, IndexLookUpReader) 以下。
在 4.0 版本还没有支持,但是后续有支持的计划。
1 个赞
好吧,您猜对了,下次表述清楚点。 我看到proto中有Projection的定义,后来看tikv源码,才发现没有实现,谢谢回复。
,如有问题可以开新帖提问哦~
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。