TIDB Coprocessor

1.TIDB  Coprocessor 
在整个TIDB 数据库的架构中,TIDB SERVER 是无状态的,数据存储在TIKV集群中。当TIDB SERVER 
收到来自客户端的查询请求时,会向TIKV集群获取数据信息,这种架构存在两个性能问题。
(1)TIKV 集群返回了所有的数据,造成网络开心过大。
(2)TIDB SERVER 需要计算所有的数据,占用大量CPU资源,而相对的,TIKV集群的各个
节点并没有进行太多的计算,CPU负载很低。

如果没有 coprocessor 的帮助,就需要通过网络将3个TIKV节点的数据汇总到TIDB SERVER 的缓存中,
统一进行汇总计算。
这里使用TIKV中的 coprocessor组件将SQL计算下推到TIKV节点来完成。具体流程:
(1)当TIDB SERVER 收到查询语句时,它会对语句进行解析编译出物理执行计划,
然后将其转化为TIKV的 coprocessor 请求。
(2)TIDB SERVER 根据数据的分布情况将该 coprocessor 请求分发给所有相关的TIKV节点。
(3)当TIKV server收到 coprocessor请求后,根据请求中的算子对数据进行过滤,聚合等操作。
并将结果返回给TIDB SERVER 
(4)TIDB SERVER 在收到所有数据的返回结果后,进行二次聚合。并计算出最终结果,随后
将结果返回给客户端。

2.TIKV coprocessor 处理三类请求 
DAG:执行物理算子,为SQL计算出中间结果,从而减少TIDB SERVER 的计算和网络开销。
这是绝大多数场景下的 coprocessor 执行的任务,目前已支持下推的物理算子包括 
TableScan,IndexScan,Select(列过滤),limit,TopN, Aggregation 等。
Analyze:用于采样和分析表数据,生成统计信息,这些统计信息会被TIDB SERVER的优化器使用。
CheckSum:对表数据进行校验,用于在导入数据后进行一致性校验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值