【TiKV / HTAP 内核】Coprocessor:DAG 下推与向量化边界

💡 原文中文,约8700字,阅读约需21分钟。
📝

内容提要

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 时间和读带宽限制等手段进行资源控制,避免影响在线事务。

🏷️

标签

➡️

继续阅读