【TiDB理论知识09】TiFlash

一 TiFlash架构

二 TiFlash 核心特性

TiFlash 主要有

  1. 异步复制、
  2. 一致性、
  3. 智能选择、
  4. 计算加速

等几个核心特性。

1 异步复制

TiFlash 中的副本以特殊角色 (Raft Learner) 进行异步的数据复制,这表示当 TiFlash 节点宕机或者网络高延迟等状况发生时,TiKV 的业务仍然能确保正常进行。

只从leader中接受raft log ,不参与 投票 选举 等。

基于主键快速更新 ,和TiKV 不会有过大的延迟 。

2 一致性读取

图解 :

T0 时刻 客户端写入两条数据 分别为 key = 1 value = 100 ,key = 999 value =7,这两条数据分别存在两个TiKV的Region 上,写入数据会有Raft log,这两条数据写入日志的序列号分别为 101 和 22 。TiFlash的region通过 Raft Log 同步数据,此刻 同步到TiFlash的Raft Log日志索引号分别为95 和 18的日志。即数据还没有同步到TiFlash.

 在T1 时刻客户端请求TiFlash 读取数据,T1时刻 ,TIKV的region数据已经写到日志序列号分别为 120 和 29的数据了 。TiFlash的数据刚到 106 和 20 。此刻TiFlash读取不到最新的数据

T2时刻 又有客户端向TiKV 写入数据,将key=1的数据 value cong 100改为了 200。写到了日志索引号分别为 122 和 30的日志了。那么问题来了 TiFlash 如何 确认我能读取到此刻TiKV 写入的最新数据同步到了TiFlash 呢 ?

解决 :会做个轻量级的确认 ,T3时刻 TiKV 的数据 已经写到了 125和 31  ,TiFlash 写到了 116 和 21 。 那么TiFlash 会等待日志序列号分别为125和 31日志复制过来。

T4时刻 日志还没完全复制过来。

 

T5 时刻日志已经复制过来 ,但是查询请求是T1时刻发出,只能看到T1时刻之前的数据,所以读到的key=1的值为100;

智能选择

TiDB 可以自动选择使用 TiFlash 列存或者 TiKV 行存,甚至在同一查询内混合使用提供最佳查询速度。这个选择机制与 TiDB 选取不同索引提供查询类似:根据统计信息判断读取代价并作出合理选择。

计算加速

TiFlash 对 TiDB 的计算加速分为两部分:列存本身的读取效率提升以及为 TiDB 分担计算。其中分担计算的原理和 TiKV 的协处理器一致:TiDB 会将可以由存储层分担的计算下推。

参考 

TiFlash 简介 | PingCAP 文档中心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DBA之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值