本文作者:施闻轩,TiFlash 资深研发工程师
背景
在 Part1 中我们主要对 DeltaTree 引擎的结构和写入相关流程进行了介绍。本文对读取流程进行介绍。若读者尚未阅读过 Part1 ,需要先阅读 Part1 文章了解前置知识。
本文基于写作时最新的 TiFlash v6.1.0 设计及源码进行分析。随着时间推移,新版本中部分设计可能会发生变更,使得本文部分内容失效,请读者注意甄别。TiFlash v6.1.0 的代码可在 TiFlash 的 git repo 中切换到 v6.1.0 tag 进行查看。
读
如 Part1 所述,写入时,DeltaTree 引擎形成的结构如下:

数据首先在值域范围上进行切分,分成了多个不同的 Segment,然后在时域范围上进行切分,按照新老数据分为 Stable 层(绝大多数数据)和 Delta 层(刚写入的数据)。其中,Delta 层又分为磁盘上的数据和内存中的 MemTa

本文深入剖析TiFlash DeltaTree引擎的读取流程,包括快照读取机制,以及如何高效实现MemTable、磁盘上Delta层和Stable层的数据快照。通过创建快照,TiFlash保证了读操作的ACID隔离,并避免长时间读写冲突。在读取过程中,使用PositionalIndex优化K路归并,提高Scan操作的效率。
最低0.47元/天 解锁文章
868

被折叠的 条评论
为什么被折叠?



