【TiKV / HTAP 内核】Coprocessor:DAG 下推与向量化边界
内容提要
TiKV的Coprocessor通过将计算下推到本地执行,优化了数据查询性能。它执行TiDB编译的DAG请求,支持表扫描、过滤和聚合等操作,但不支持跨Region的连接。Coprocessor的批量执行提高了CPU效率,并通过资源控制避免影响在线事务。
关键要点
-
TiKV的Coprocessor通过将计算下推到本地执行,优化了数据查询性能。
-
Coprocessor执行TiDB编译的DAG请求,支持表扫描、过滤和聚合等操作,但不支持跨Region的连接。
-
Coprocessor的批量执行提高了CPU效率,并通过资源控制避免影响在线事务。
-
Coprocessor只执行TiDB编译好的tipb DAG,不解析SQL,不做跨Region join。
-
可下推的操作包括TableScan、IndexScan、Selection、Aggregation、TopN、Limit和Projection,Join与全局排序归并留在TiDB端。
-
Coprocessor的批量执行是行存下推优化,不等价于分布式列存MPP向量化,二者尺度不同、不能互相替代。
延伸解读
Coprocessor的工作机制
Coprocessor通过将计算下推到TiKV本地执行,显著提高了数据查询性能。它只执行TiDB编译好的DAG请求,避免了SQL解析的复杂性。这种机制使得数据处理更高效,但也限制了其功能,无法处理跨Region的连接。
下推操作的限制
虽然Coprocessor支持多种下推操作,如表扫描和聚合,但并非所有操作都可以下推。复杂的用户自定义函数和跨Region的连接仍需在TiDB端处理,这意味着在设计查询时需考虑这些限制,以优化性能。
资源控制的重要性
Coprocessor请求与在线事务共享同一TiKV进程,若不加以控制,可能导致在线事务延迟。TiKV通过独立线程池和资源限制措施,确保Coprocessor请求不会影响正常事务的性能,这对于高并发场景尤为重要。
延伸问答
Coprocessor 是什么,它的主要功能是什么?
Coprocessor 是 TiKV 的一个组件,通过将计算下推到本地执行,优化数据查询性能,支持表扫描、过滤和聚合等操作。
Coprocessor 支持哪些操作?
Coprocessor 支持 TableScan、IndexScan、Selection、Aggregation、TopN、Limit 和 Projection 等操作,但不支持跨 Region 的连接。
Coprocessor 如何提高 CPU 效率?
Coprocessor 通过批量执行来提高 CPU 效率,并通过资源控制避免影响在线事务。
Coprocessor 与 TiDB 之间的关系是什么?
Coprocessor 执行 TiDB 编译的 DAG 请求,TiDB 负责生成物理计划并将其发送给 Coprocessor 执行。
Coprocessor 的下推边界是什么?
Coprocessor 只执行 TiDB 编译好的 tipb DAG,不能下推复杂的用户自定义函数和跨 Region 的连接。
Coprocessor 如何处理资源控制?
Coprocessor 通过独立线程池、请求时限、CPU 时间和读带宽限制等手段进行资源控制,避免影响在线事务。