TiDB 源码阅读(六):TiDB Coprocessor 源码解析

💡 原文中文,约17300字,阅读约需42分钟。
📝

内容提要

TiDB 的 Coprocessor 模块实现了计算下推,将部分计算逻辑下推至 TiKV 节点,从而减少网络传输并提升性能。通过 copTask 和 copIterator,TiDB 能并行处理数据请求,优化查询效率。文章详细解析了 Coprocessor 的架构、核心数据结构及请求执行流程。

🎯

关键要点

  • TiDB 的 Coprocessor 模块实现了计算下推,减少网络传输并提升性能。
  • Coprocessor 允许 TiDB 将部分计算逻辑下推到 TiKV 节点执行。
  • 通过并行计算,多个 TiKV 节点可以处理各自的数据。
  • TiDB Coprocessor 的架构分为 TiDB Server、copIterator 和 TiKV 节点。
  • 核心数据结构包括 Store、CopClient、copTask、copIterator 和 KeyRanges。
  • copTask 代表一个需要发送到单个 Region 的任务。
  • copIterator 负责任务分发、并发控制和结果收集。
  • 请求执行流程包括构建 CopIterator、构建 copTask、启动 Workers 和处理响应。
  • 并发控制机制包括基础并发度、小任务额外并发和流量控制。
  • 错误处理机制包括 Region 错误和锁错误的重试。
  • TiDB 支持分页请求以避免单次返回数据过多。
  • 对于小任务,可以将多个 Region 的请求批量发送到同一个 Store。
  • 通过实际例子展示了 SELECT 查询的执行过程和 Coprocessor 的工作机制。
➡️

继续阅读