1.TiKV 源码解析系列文章(十四)Coprocessor 概览
TiKV 源码解析系列文章(十四)Coprocessor 概览
本文将简要介绍 TiKV Coprocessor 的源码基本原理。TiKV Coprocessor 是源码 TiDB 的一部分,用于在 TiKV 层处理读请求。源码通过引入 Coprocessor,源码军师神助指标源码TiKV 可以在获取数据后进行计算,源码从而提高性能。源码
传统处理方式中,源码TiDB 向 TiKV 获取数据,源码然后在 TiDB 内部进行计算。源码而 Coprocessor 则允许 TiKV 进行计算,源码将计算结果直接返回给 TiDB,源码狙杀指标源码减少数据在系统内部的源码传输。
Coprocessor 的源码概念借鉴自 HBase,其主要功能是源码对读请求进行分类,处理包括 TableScan、源码IndexScan、转换币源码Selection、Limit、TopN、Aggregation 等不同类型请求。其中,android基金源码DAG 类请求是最复杂且常用的类型,本文将重点介绍。
DAG 请求是由一系列算子组成的有向无环图,这些算子在代码中称为 Executors。DAG 请求目前支持两种计算模型:火山模型和向量化模型。springdataflow工程源码在当前的 TiKV master 上,这两种模型并存,但火山模型已被弃用,因此本文将重点介绍向量化计算模型。
向量化计算模型中,所有算子实现了 BatchExecutor 接口,其核心功能是 get_batch。算子类型包括 TableScan、IndexScan、Selection、Limit、TopN 和 Aggregation 等,它们之间可以任意组合。
以查询语句“select count(1) from t where age>”为例,展示了如何使用不同算子进行处理。本文仅提供 Coprocessor 的概要介绍,后续将深入分析该模块的源码细节,并欢迎读者提出改进意见。