目录
TiDB体系架构
TiDB Server
TiDB Server是无状态的
无状态,指数据不在TiDB中落地,即TiDB Server不存储数据。
TiDB Server是可扩展的
根据并发需求,扩展或回收TiDB Server节点(与TiKV的水平扩容或缩容类似)
数据的KV转化
KV(Key-Value),即键值对;将关系型数据转化为KV进行持久化,也能将KV转化为关系型数据返回值客户端
将关系型数据转化为KV进行持久化为例:
TiDB Server将数据转化为键值对插入到TiKV中,TiKV使用rocksdkv将其转化为region并为其创造副本,存储至rocksdb的实例中
垃圾回收
垃圾回收操作gc,按一定时间间隔回收历史版本
注意:Online DDL不阻塞线上业务
数据表在TiDB Server中的执行过程
SQL语句在TiDB Server中的执行过程
TiKV(行存)
TiKV的水平扩容或者缩容
根据数据的储存需求,增加TiKV节点,即水平扩容;或建设TiKV节点,即水平扩容
TiKV的高可用性与强一致性
高可用性:TiKV使用Raft协议为region创造副本(默认为3副本,可以设置更多,如5副本)
强一致性:对leader的修改会被应用于其他副本,当集群的大多数副本都与被修改的leader保持一致时,才完成修改
MVCC多并发事务支持
修改数据的同时,可读取数据(未被修改的/修改前的)
Coprocessor(算子下推)
每个TiKV节点都能承担一部分对自身数据的计算,过滤等操作
rocksdb
rocksdb,即单机存储引擎;用于保证数据的持久化,包括一下两各部分
rocksdb raft:存储指令供TiKV执行
rocksdb kv:将表数据转化为键值对存储至rocksdb实例中
region的分布式存储
PD(Placement Driver)
元数据存储
元数据用于确定region在哪几个TiKV节点或TiFlash节点(数据的分布)
收集集群信息进行调度
每隔一段时间TiKV和region向pd汇报状态信息(即心跳),pd根据状态信息进行调度;防止某个TiKV上有过多region
全局时间戳TSO
对于SQL语句:开始执行时获取TSO
对于事务:执行开始时,结束时都获取TSO
TiFlash(列存)
TiFlash是TiKV的列存版本,存储的region本质相同
OLTP与OLAP
OLTP:即在线交易/事务处理,与行存(TiKV)有关
OLAP:即在线分析处理,与列存(TiFlash)有关
HTAP同时支持OLTP和OLAP
TIDB Server通过CBO的智能选择,会帮助用户分析SQL语句属于OLTP或OLAP
例题
1.下列功能是由TiKV或TiFlash实现的为?(选2项)
A.根据集群中Region的信息,发出调度指令
B.对于OLAP和OLTP进行业务隔离
C.将关系型数据转化为KV存储进行持久化
D.将KV存储转化为关系型数据返回给客户端E.配合TiDB Server生成事务的唯一IDF.副本的高可用和一致性
答案:B,F
解析:根据region信息,进行调度(A),生成事务ID(E),均为PD实现的;将关系型数据转化为KV(C),或将KV转化为关系型数据(D),均为TiDB Server实现
2关于TiKV或TiDB Server,下列说法不正确的是?
A.数据被持久化在TiKV的 RocksDB引擎中
B.对于老版本数据的回收(GC),是由TiDB Server在TiKV上完成的
C.两阶段提交的锁信息被持久化到TiDB Server中
D.Region可以在多个TiKV节点上进行调度,但是需要PD节点点发出调度指念
答案:C
解析:根据关键字“持久化”可知应为TiKV,TIDB Server不负责数据的持久化