TiFlash的行转列是如何实现的

TiFlash 是在 Raft 同步的时候执行行转列操作的。

Raft 同步过来分别有两类数据:

a. 数据快照(Snapshot),包含一整个 Region 大小的数据,主要来自于新增 TiFlash 副本,或使用 Lightning 等数据导入 SST

对于数据快照过来的数据(如 96MB SST Snapshot),TiFlash 会批量进行行转列,生成 DTFile 文件,然后执行特殊的 Ingest Snapshot 流程。

b. 增量 KV 数据,主要来自于写入操作。

对于增量 KV 数据,TiFlash 在内存中将其重新组织为以 Block 为单位的内存数据,然后执行标准的写入流程。