头图

TiDB的存储架构分为TiKV和TiFlash。TiVK是行存引擎,主要用于OLTP场景;而TiFlash是列存引擎,主要用于OLAP场景。下面重点讨论一下TiDB的行存引擎:TiKV,它的体系架构如下图所示:
image.png

视频讲解如下:
https://www.bilibili.com/video/BV1FWoeYyEEY/?aid=114227859690...

该类型的节点负责以行式方式存储数据,从外部看TiKV是一个分布式支持事务的Key-Value存储引擎。表中的数据会被划分成多个Region,Region是存储数据的基本单位,默认大小256M。每个Region负责存储一个Key Range(从Start Key到End Key的左闭右开区间)的数据。每个TiKV节点会负责多个Region。TiKV的API在KV键值对层面提供对分布式事务的原生支持,默认提供了SI(Snapshot Isolation)的隔离级别,这也是TiDB在SQL层面支持分布式事务的核心。TiDB的SQL层做完SQL解析后,会将SQL的执行计划转换为对TiKV API的实际调用。另外,TiKV中的Region会自动维护多副本(默认为3个副本),天然支持高可用和自动故障转移。在这3个Region的副本中,其中一个的角色是Leader,另外两个的角色是Follower。Leader副本所在的TiKV节点提供数据读写服务。TiKV通过PD对这些Region以及副本进行调度,以保证数据和读写负载都均匀地分散在各个TiKV上,这样的设计保证了整个集群资源的充分利用并且可以随着机器数量的增加水平扩展。


赵渝强老师
36 声望16 粉丝

20年以上的IT行业从业经历,清华大学计算机软件工程专业毕业,京东大学大数据学院院长,Oracle中国有限公司高级技术顾问;曾在BEA、甲骨文、摩托罗拉等世界500强公司担任高级软件架构师或咨询顾问等要职,精通大...