TiFalsh通过raft同步数据,如何处理perlator事务comited前的日志数据

我很好奇,perlator有两阶段,每一行数据分为三列,进而保证perlator的实现,但raft同步日志是在事务之下,即会将中间的lock等列数据同步给tiflash,tiflash持久化的行数据应该不包括这些信息吧,所以具体怎么实现事务的还原,并应对无用脏日志的(这些日志参与行转列吗)。

tiflash作为tikv的KvEngine,写入时是Block封装成的列,所以请大佬指点具体一个事务数据从tikv到tiflash的Block封装前的逻辑操作(行转列)或者代码位置在哪里?

感谢

1 个赞

可以看下这篇文字,希望对你有帮助。

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

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

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

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

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

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

以下是往期 TiFlash 源码解读的资料大合集,可下载自取。

第一期: TiFlash 存储引擎的设计思路

作者:黄俊深

内容概要:将对 TiDB HTAP 的整体形态进行介绍,并详细解析存储层 DeltaTree 引擎进行优化的设计思路以及其子模块。

会议资料:TiFlash 存储层概览.pdf (877.2 KB)

视频回放:TiFlash 存储引擎的设计思路_哔哩哔哩_bilibili

全文回顾:专栏 - TiFlash 源码阅读(一) TiFlash 存储层概览 | TiDB 社区

第二期: TiFlash 计算层 Overview

作者:徐飞

内容概要:通过本期内容可以对 TiFlash 的计算层的设计原理以及代码实现 有一个概要了解。

会议资料:TiFlash 计算层概览 - 徐飞.pdf (1.1 MB)

视频回放:源码解读 - TiFlash 计算层 Overview_哔哩哔哩_bilibili

全文回顾:专栏 - TiFlash 源码阅读(二)计算层概览 | TiDB 社区

第三期: TiFlash DeltaTree 引擎设计及实现解析 Part 1

作者:施闻轩

内容概要:通过本期内容可以深入理解 TiFlash 存储层 DeltaTree 引擎写路径的相关原理及工作流程。

会议资料:TiFlash DeltaTree Storage Engine (Part 1).pdf (2.2 MB)

视频回放:TiFlash DeltaTree 引擎设计及实现解析_哔哩哔哩_bilibili

全文回顾:专栏 - TiFlash 源码阅读(三) DeltaTree 存储引擎设计及实现分析 - Part 1 | TiDB 社区

第四期: TiFlash DeltaTree 引擎设计及实现解析 Part 2

作者:施闻轩

内容概要:通过本期内容可以深入理解 TiFlash 存储层 DeltaTree 引擎的读写工作流程及代码实现。

会议资料:TiFlash DeltaTree Storage Engine (Part 2).pdf (1.2 MB)

视频回放:源码解读 | TiFlash 存储层 DeltaTree 引擎(读路径)_哔哩哔哩_bilibili

全文回顾:专栏 - TiFlash 源码阅读(五) DeltaTree 存储引擎设计及实现分析 - Part 2 | TiDB 社区

第五期: TiFlash DDL 模块设计及实现解析

作者:洪韫妍

内容概要:通过本期内容你可以了解 TiFlash DDL 模块的设计思想和代码实现方式。

会议资料:TiFlash 源码解读 - DDL 模块(2).pdf (1.5 MB)

视频回放:源码解读 | TiFlash DDL 模块设计及实现解析_哔哩哔哩_bilibili

全文回顾:专栏 - TiFlash 源码解读(四) | TiFlash DDL 模块设计及实现分析 | TiDB 社区

第六期: TiFlash 中常用算子的设计与实现

作者:齐智

内容概要:通过本期内容你会对 TiFlash 算子的各个阶段有一定的了解,在听完之后明白算子代码的设计逻辑,能够进一步独立阅读代码或者做简单的 issue。

会议资料:TiFlash 中常用算子的设计与实现.pdf (2.9 MB)

视频回放:源码解读 | TiFlash 中常用算子的设计与实现_哔哩哔哩_bilibili

第七期: TiFlash DeltaTree Index 的设计和实现

作者:李德竹

内容概要:通过本期内容你可以理解存 TiFlash 储层核心数据结构 DeltaTree Index 的作用以及相关的实现原理。

会议资料:TiFlash DeltaTree Index 的设计和实现分析.pdf (1.2 MB)

视频回放:TiFlash DeltaTree Index_哔哩哔哩_bilibili

全文回顾:专栏 - TiFlash DeltaTree Index 的设计和实现分析 | TiDB 社区

第八期: TiFlash Proxy 模块介绍

作者:骆融臻

内容概要:本期内容将帮大家了解 TiFlash Proxy 模块的原理。它是如何帮助 TiFlash 获得数据的,它又是如何与 TiFlash 交互的,相比 TiKV,它针对 TiFlash 的写入模式做了哪些调整优化。

会议资料:TiFlash 源码解读 - Proxy 模块.pdf (1.6 MB)

视频回放:TiFlash Proxy 模块介绍_哔哩哔哩_bilibili

全文回顾:专栏 - TiFlash Proxy 模块介绍 | TiDB 社区

第九期: TiFlash 表达式的实现与设计

作者:黄海升

内容概要:通过本期内容你将了解 TiFlash 表达式的设计和源码实现,为后续你参与 TiFlash 的贡献提供帮助。

会议资料:TiFlash 表达式的实现与设计.pdf (1.8 MB)

视频回放:TiFlash 表达式的实现与设计_哔哩哔哩_bilibili

全文回顾:专栏 - TiFlash 表达式的实现与设计 | TiDB 社区

3 个赞

这个太全了

收藏了,666 :100:

谁说表妹不懂技术?对社区最了解的表妹说第二,谁敢说第一 :smile:

牛,收藏一下,慢慢看

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。