TiDB 高级系统管理 :TiDB 数据库 HTAP 技术 要点
思考一下:
1. 异步复制 怎么保证一致性读取?
2 raft 角色有哪三种?
TiDB 数据库 HTAP 概述
青铜级练习
特点1
htap
架构是什么
- 不修改整体结构,引入一个角色(不投票,不选举,只同步数据)
- tiflash cols
- 行列混合是2个产品。
- 大量数据
- mpp计算内存完成的,服务crash不行
- 只能是等值连接。
mpp工作原理
数据交换
- 过滤数据,然后放入内存。
- 时候通过数据交换 把不同节点放在一个一个节点上。
- 加速本节点join
- 加速group by
- 最后汇报给tidb server
小测试
1.下面属于 HTAP 场景特点的是?(请选择 3 项)
A. 在故障恢复方面可以做到 RPO = 0
B. 支持分区特性
C. 支持在线业务高并发
D. 同时支持 OLTP 和 OLAP 业务
E. 能够读取到一致性的数据
答案:c d e
2.关于 MPP 架构,下列说法不正确的是?
A. MPP 架构的中间结果都在内存中
B. MPP 架构可以作用于 TiKV 和 TiFlash 上的数据
C. MPP 架构目前不支持非等值 join
D. MPP 架构可以对聚合、JOIN 等操作加速
答案:b
白银级练习:MPP 架构是什么 与HTAP关系
- TiDB 通过 TiFlash 节点引入了 MPP 架构。这使得大型表连接类查询可以由不同 TiFlash 节点分担共同完成。
- 不支持
当前 MPP 模式不支持的主要功能如下(详细信息请参阅用户文档):
分区表
Window Function
Collation
部分内置函数
读取 TiKV 数据
OOM Spill
Union
Full Outer Join
- HTAP 数据隔离性:TiKV、TiFlash 可按需部署在不同的机器,解决 HTAP 资源隔离的问题。
- TiFlash 支持 MPP 模式的查询执行,即在计算中引入跨节点的数据交换(data shuffle 过程)。
TiDB 默认由优化器自动选择是否使用 MPP 模式, 你可以通过修改变量 tidb_allow_mpp 和 tidb_enforce_mpp 的值来更改选择策略。
黄金级练习:Lesson 10:TiFlash
1.下面属于 TiFlash 核心特性的是?(请选择 3 项)
A. 采用行存(tikv) 列存(TiFlash)的混合存储方式(这个是HTAP)
B. region 支持 raft 投票和选举(learner)
C. TiFlash 采用异步复制来保证和 TiKV 一致
D. 在 TiKV 上写入数据成功后,在 TiFlash 上可以一致性读取
E. CBO 基于成本选择在 TiFlash 或者 TiKV 上执行 SQL
答案:c d e
2.关于 TiFlash 的使用,描述不正确的是?
A. TiFlash 不善于处理高并发,QPS 一般不应过高
B. TiFlash 建议混合部署在服务器上
C. TiFlash 支持全新部署和扩容两种部署方式
D. 部署 TiFlash,要求开启 PD 的 Placement Rules 功能
答案:b
tiflash 架构是什么?
TiFlash 主要有异步复制、一致性、智能选择、计算加速等几个核心特性。
异步复制
- TiFlash 中的副本以特殊角色 (Raft Learner) 进行异步的数据复制。这表示当 TiFlash 节点宕机或者网络高延迟等状况发生时,TiKV 的业务仍然能确保正常进行。
- 列存副本 通过 Raft Learner 协议 异步复制(异步是问题的,如何解决这个问题),
但是在读取的时候通过 Raft 校对索引配合 MVCC 的方式获得 Snapshot Isolation 的一致性隔离级别
一致性
TiFlash 提供与 TiKV 一样的快照隔离支持,且保证读取数据最新(确保之前写入的数据能被读取)。这个一致性是通过对数据进行复制进度校验做到的。
每次收到读取请求,TiFlash 中的 Region 副本会向 Leader 副本发起进度校对(一个非常轻的 RPC 请求),只有当进度确保至少所包含读取请求时间戳所覆盖的数据之后才响应读取。
t0 时刻 写入到tikv,但是raft log 没有复制到tiflash
t1 客户端读取怎么办?
- t2 有client 有开始写数据了。key 有2个版本的数据
- t3 时候 等 同步信息
- t4 等到全部数据。
- 我只看t1时刻数据,t2数据不看