TiFlash 集群资源利用率
- CPU:每个 TiFlash 实例的 CPU 使用率
- Memory:每个 TiFlash 实例内存的使用情况
- IO utilization:每个 TiFlash 实例的 IO 使用率
TiFlash 关键性能指标
- MPP Query count:每个 TiFlash 实例 MPP 查询数量的瞬时值,表示当前 TiFlash 实例需要处理的 MPP 查询数量(包括正在处理的以及还没被调度到的)。
- Request QPS:所有 TiFlash 实例收到的 coprocessor 请求数量。
run_mpp_task、dispatch_mpp_task和mpp_establish_conn为 MPP 请求。batch:batch 请求数量。cop:直接通过 coprocessor 接口发送的 coprocessor 请求数量。cop_execution:正在执行的 coprocessor 请求数量。remote_read、remote_read_constructed和remote_read_sent为 remote read 相关指标,remote read 增多一般意味着系统出现了问题。
- Executor QPS:所有 TiFlash 实例收到的请求中,每种 dag 算子的数量,其中
table_scan是扫表算子,selection是过滤算子,aggregation是聚合算子,top_n是 TopN 算子,limit是 limit 算子,join为关联算子,exchange_sender和exchange_receiver为数据发送和接收算子。
延迟指标
Request Duration Overview:每秒所有 TiFlash 实例处理所有请求类型的总时长堆叠图。
如果请求类型为
run_mpp_task、dispatch_mpp_task或mpp_establish_conn,说明 SQL 语句的执行已经部分或者完全下推到 TiFlash 上进行,通常包含 join 和数据分发的操作,这是 TiFlash 最常见的服务类型。如果请求类型为
cop,说明整个语句并没有完全下推到 TiFlash,通常 TiDB 会将全表扫描算子下推到 TiFlash 上进行数据访问和过滤。在堆叠图中,如果cop占据主导地位,需要仔细权衡是否合理。- 如果 SQL 访问的数据量很大,优化器可能根据成本模型估算 TiFlash 全表扫描的成本更低。
- 如果表结构缺少合适的索引,即使访问的数据量很少,优化器也只能将查询下推到 TiFlash 进行全表扫描。在这种情况下,创建合适的索引,通过 TiKV 访问数据更加高效。
Request Duration:所有 TiFlash 实例每种 MPP 和 coprocessor 请求类型的总处理时间,包含平均和 P99 处理延迟。
Request Handle Duration:指
cop和batch cop从开始执行到执行结束的时间,不包括等待时间,只包含cop和batch cop两种类型,包含平均和 P99 延迟。
Raft相关指标
Raft Wait Index Duration:所有 TiFlash 实例等待本地 Region index >= read_index 所花费的时间,即进行 wait_index 操作的延迟。如果 Wait Index 延迟过高,说明 TiKV 和 TiFlash 之间数据同步存在明显的延迟,可能的原因包括:
- TiKV 资源过载
- TiFlash 资源过载,特别是 IO 资源
- TiKV 和 TiFlash 之间存在网络瓶颈
Raft Batch Read Index Duration:所有 TiFlash 实例 Read Index 的延迟。如果该指标过高,说明 TiFlash 和 TiKV 之间的交互速度较慢,可能的原因包括:
- TiFlash 资源过载
- TiKV 资源过载
- TiFlash 和 TiKV 之间存在网络瓶颈
IO流程指标
Write Throughput By Instance:每个 TiFlash 实例写入数据的吞吐量,包括 apply Raft 数据日志以及 Raft 快照的写入吞吐量。
Write flow:所有 TiFlash 实例磁盘写操作的流量。
- File Descriptor:TiFlash 所使用的 DeltaTree 存储引擎的稳定层。
- Page:指 Pagestore,TiFlash 所使用的 DeltaTree 存储引擎的 Delta 变更层。
Read flow:所有 TiFlash 实例磁盘读操作的流量。
- File Descriptor:TiFlash 所使用的 DeltaTree 存储引擎的稳定层。
- Page:指 Pagestore,TiFlash 所使用的 DeltaTree 存储引擎的 Delta 变更层。
Write Throughput By Instance:每个 TiFlash 实例写入数据的吞吐量,包括 apply Raft 数据日志以及 Raft 快照的写入吞吐量。
Write flow:所有 TiFlash 实例磁盘写操作的流量。
- File Descriptor:TiFlash 所使用的 DeltaTree 存储引擎的稳定层。
- Page:指 Pagestore,TiFlash 所使用的 DeltaTree 存储引擎的 Delta 变更层。
Read flow:所有 TiFlash 实例磁盘读操作的流量。
- File Descriptor:TiFlash 所使用的 DeltaTree 存储引擎的稳定层。
- Page:指 Pagestore,TiFlash 所使用的 DeltaTree 存储引擎的 Delta 变更层。
可以通过 (Read flow + Write flow) ÷ 总的 Write Throughput By Instance 计算出整个 TiFlash 集群的写放大倍数。




