1.TiFlash 源码阅读(一) TiFlash 存储层概览
TiFlash 源码阅读(一) TiFlash 存储层概览
本系列文章聚焦于 TiFlash,源码读者需具备基本的源码 TiDB 知识。TiFlash 是源码 TiDB HTAP 模式的关键组件,作为 TiKV 的源码列存扩展,通过 Raft Learner 协议实现异步复制,源码并提供与 TiKV 相同的源码源码 qt快照隔离支持。自 5.0 引入 MPP 后,源码TiDB 的源码实时分析场景下计算加速能力得到了增强。
TiFlash 整体逻辑模块划分如下:通过 Raft Learner Proxy 接入多 Raft 体系,源码计算层 MPP 在 TiFlash 间进行数据交换,源码提供更强的源码分析计算能力。Schema 模块与 TiDB 表结构同步,源码将 TiKV 同步数据转换为列形式,源码并写入列存引擎。源码底层为 DeltaTree 引擎。源码netty源码编译 rxtx
TiFlash 基于 ClickHouse fork,沿用了 ClickHouse 的向量化执行引擎,并加入针对 TiDB 的对接、MySQL 兼容、Raft 协议、集群模式、实时更新列存引擎、魔塔游戏 c 源码MPP 架构等特性。DeltaTree 引擎解决了高频率数据写入、实时更新读性能优化、符合 TiDB 事务模型、支持 MVCC 过滤、数据分片便于分析场景等需求。
DeltaTree 引擎不同于 MergeTree,查历史价 源码具备原生支持高频率写入、列存实时更新下读性能优化、支持 TiDB 事务模型、数据分片便于提供分析特性等优势。MergeTree 引擎存在写入碎片、Scan 时 CPU cache miss 严重、清理过期数据时 compaction 导致性能波动等问题,artnet转dmx 源码而 DeltaTree 通过横向分割数据管理、delta-stable 数据组织、PageStorage 存储等设计优化了性能。
DeltaTree 引擎通过在表内按 handle 列分段管理数据,采用 delta-stable 数据组织,PageStorage 存储小数据块,构建 DeltaIndex 和 Rough Set Index 等组件优化读性能。DeltaIndex 帮助减少 CPU bound 的 merge 操作,Rough Set Index 用于过滤数据块,减少不必要的 IO 操作。
TiFlash 存储层 DeltaTree 引擎在不同数据量和更新 TPS 下读性能表现优于基于 MergeTree 的实现,提供更稳定、高效的读、写性能。TiFlash 中的 PageStorage、DeltaIndex、Rough Set Index 等组件协同作用,优化数据管理和查询性能。
DeltaTree 引擎在 TiFlash 内部实现中,通过 PageStorage 存储数据,DeltaIndex 提高读性能,Rough Set Index 优化查询效率,提供了对 HTAP 场景的优化和支持。TiFlash 存储层 DeltaTree 引擎的设计和实现细节将在后续章节中详细展开。