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 的工作机制。
➡️