小白提问:Coprocessor是个什么东西?

面对监控指标一脸懵逼。

Coprocessor Overview

  • Request duration:从收到 coprocessor 请求到处理结束所消耗的总时间
  • Total Requests:每种类型的总请求的 ops
  • Handle duration:每分钟实际处理 coprocessor 请求所消耗的时间的直方图
  • Total Request Errors:Coprocessor 每秒请求错误的数量,正常情况下,短时间内不应该有大量的错误
  • Total KV Cursor Operations:各种类型的 KV cursor 操作的总数量的 ops,例如 select、index、analyze_table、analyze_index、checksum_table、checksum_index 等
  • KV Cursor Operations:每秒各种类型的 KV cursor 操作的数量,以直方图形式显示
  • Total RocksDB Perf Statistics:RocksDB 性能统计数据
  • Total Response Size:coprocessor 回应的数据大小

Coprocessor Detail

  • Handle duration:每秒钟实际处理 coprocessor 请求所消耗的时间的直方图
  • 95% Handle duration by store:每秒钟中 95% 的情况下,每个 TiKV 实例处理 coprocessor 请求所花费的时间
  • Wait duration:coprocessor 每秒钟内请求的等待时间,99.99% 的情况下,应该小于 10s
  • 95% Wait duration by store:每秒钟 95% 的情况下,每个 TiKV 实例上 coprocessor 请求的等待时间
  • Total DAG Requests:DAG 请求的总数量的 ops
  • Total DAG Executors:DAG executor 的总数量的 ops
  • Total Ops Details (Table Scan):coprocessor 中请求为 select 的 scan 过程中每秒钟各种事件发生的次数
  • Total Ops Details (Index Scan):coprocessor 中请求为 index 的 scan 过程中每秒钟各种事件发生的次数
  • Total Ops Details by CF (Table Scan):coprocessor 中对于每个 CF 请求为 select 的 scan 过程中每秒钟各种事件发生的次数
  • Total Ops Details by CF (Index Scan):coprocessor 中对于每个 CF 请求为 index 的 scan 过程中每秒钟各种事件发生的次数

计算下推,把本来在TiDB Server上的计算操作下推到TiKV上,通过并行计算提升性能。

从官方文档上看,这个可能是TIDB独有的技术了【计算下推】,TIKV间并行处理,然后统一MERGE给TIDB【对于一些全局排序的场景】

这个不算tidb独有的技术

建议学习一下PCTA和PCTP课程

Coprocessor简单说来就是TiKV读取数据并计算的模块,该概念灵感来自于 HBase,目前在 TiDB 中的实现类似于 HBase 中的 Coprocessor 的 Endpoint 部分,也可类比 MySQL 存储过程。
可以看下这篇源码系列文章:TiKV 源码解析系列文章(十四)Coprocessor 概览 | PingCAP

一个用于在TiKV中进行数据读取和计算的模块
有以下作用:

  1. 数据读取与计算:当TiDB收到查询请求时,它会根据查询内容生成物理执行计划,并将这些计划转化为Coprocessor请求。这些请求会被发送到TiKV节点上,由Coprocessor负责执行数据的过滤和聚合操作。
  2. 结果缓存:即在TiDB实例侧缓存下推给TiKV计算的结果。在特定场景下加速查询效率,因为它避免了重复计算相同数据的操作。
  3. 性能优化:通过将部分数据处理工作下推至存储层,Coprocessor有助于减少TiDB层的计算负担,降低响应延迟,提升整体的系统性能。

tikv上的一个计算处理器

这篇文档讲解的非常透彻 :+1:

单词释义:

coprocessor - 必应词典

美['koʊˌproʊsesə] 英['kəʊˌprəʊsesə]

  • n.〔计〕协同处理器;协理器

  • 网络协处理器;协同处理机;辅助处理器

  • 变形复数:coprocessors;

硬件上的协处理器定义:

协处理器

协处理器(coprocessor),一种芯片,用于减轻系统微处理器的特定处理任务。协处理器,这是一种协助中央处理器完成其无法执行或执行效率、效果低下的处理工作而开发和应用的处理器。

  • 中文名: 协处理器

  • 外文名: coprocessor

  • 类型: 一种芯片

  • 用途: 用于减轻系统微处理器

  • 功能: 协助中央处理器完成其无法执行或执行效率、效果低下的处理工作

TIDB中coprocessor解析:
TiKV Coprocessor 处理的读请求目前主要分类三种:
DAG:执行物理算子,为 SQL 计算出中间结果,从而减少 TiDB 的计算和网络开销。这个是绝大多数场景下 Coprocessor 执行的任务。
Analyze:分析表数据,统计、采样表数据信息,持久化后被 TiDB 的优化器采用。
CheckSum:对表数据进行校验,用于导入数据后一致性校验。

1 个赞

结合各位的回复,稍微整理了下。

Coprocessor是TiKV中读取并计算的模块,主要用于加速查询类请求, 和写入请求无关。它能将部分TiDB中的运算下推到KV节点,避免将所有数据同步到TiDB节点再计算。
TiKV Coprocessor 处理的读请求目前主要分类三种:
DAG(Directed Acyclic Graph):执行物理算子,为 SQL 计算出中间结果,从而减少 TiDB 的计算和网络开销。这个是绝大多数场景下 Coprocessor 执行的任务。
Analyze:分析表数据,统计、采样表数据信息,持久化后被 TiDB 的优化器采用。
CheckSum:对表数据进行校验,用于导入数据后一致性校验。

Grafana > TiKV-Details > Coprocessor Overview > Total KV Cursor Operations:
包含各种类型的 KV cursor 操作的总数量的 ops,例如 select、index、analyze_table、analyze_index、checksum_table、checksum_index 等。

读请求的执行过程:
1.TiDB 收到查询语句,对语句进行分析,计算出物理执行计划,组织成 TiKV 的 Coprocessor 请求。
2.TiDB 将该 Coprocessor 请求根据数据的分布,分发到所有相关的 TiKV 上。
3.TiKV 在收到该 Coprocessor 请求后,根据请求算子对数据进行过滤聚合,然后返回给 TiDB。
4.TiDB 在收到所有数据的返回结果后,进行二次聚合,并将最终结果计算出来,返回给客户端。

1 个赞

总结得很到位,通俗易懂 :+1:

学习了

1 个赞

点个赞学习了

主要是索引下推

建议学习一下PCTA和PCTP课程

让存储节点分担计算节点的sql计算压力