【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 小时前
告别人工搬运!TiDB/MySQL双库同步工具如何为业务提效100%?
mysql·tidb·测试
MiniFlyZt6 天前
分布式数据库TiDB:架构、核心特性与生产实践(分库分表)
java·数据库·分布式·spring cloud·微服务·tidb
PingCAP6 天前
从单一到多活,麦当劳中国的数据库架构迁移实战
数据库·tidb
XMYX-013 天前
TiDB 部署指南(单机模式)& CentOS 7 安装 MariaDB 教程
centos·tidb·mariadb
PingCAP16 天前
从 DB-Engines 排名攀升看 TiDB 全球突破之路
数据库·人工智能·tidb
PingCAP17 天前
Dify 基于 TiDB 的数据架构重构实践
数据库·人工智能·tidb
李迟19 天前
TiDB 数据库8.1版本编译及部署
数据库·tidb
PingCAP24 天前
TiDB 亮相宜昌“医院‘云数智’技术实践研讨及成果展示交流会”,探讨国产化 + AI 背景下的数据库新趋势
数据库·人工智能·tidb
PingCAP1 个月前
TiDB 可观测性解读(二)丨算子执行信息性能诊断案例分享
数据库·tidb
七七powerful1 个月前
mysql & 磐维(opengauss)&tidb误删数据之高级恢复
数据库·mysql·tidb