从零开始学TiDB(1) 核心组件架构概述

首先TiDB深度兼容MySQL 5.7

1. TiDB Server

SQL语句的解析与编译:首先一条SQL语句最先到达的地方是TiDB Server集群,TiDB Server是无状态的,不存储数据,SQL 发过来之后TiDB Server 负责 解析,优化,编译 这条SQL语句,并生成执行计划。

处理客户端的连接:TiDB Server 还有一个特点是可以横向扩展,当并发很高,会话数很多,TiDB Server可以横向扩展增加节点,分走一部分会话。

关系数据与KV的转化:由于 TiDB 存储的数据不是行数据,是键值对 KV,所以当insert的时候还会做 行数据变成KV类型数据的转化。 所以region由一个个的键值对组成。

OnlineDDL:DDL语句不会阻塞线上的业务。

垃圾回收:一行数据修改频繁,经历了多次修改,之前修改的版本会保留下来。久而久之就会给数据库带来压力,TiDB Server 会进行自动垃圾回收(我们叫它GC)

智能选择:通过预测SQL,来确定是访问列存版本还是行存版本。

2. 数据存储节点-TiKV

TiKV 里面存储的数据并不是建的表,当写数据的时候,会经过 TiDB Server 把数据分成一个个的region (每个region在96M-144M之间)。并且为region创建副本,默认是三副本。

所以TiKV的作用就是存储打散的数据 ,并创建多副本保证高可用。所以如果空间不够的时候可以通过添加TiKV的方式来解决。

持久化:

TiKV中运行着rocksdb这个单机的KV存储引擎。 rocksdb 有两个实例

一个是rocksdb kv:存储KV类型的数据。

一个是rocksdb raft: 存储指令,对表的DML操作,都先存在rocksdb raft 中,再由rocksdb kv 进行应用。

强一致性和高可用性:

通过Raft协议,保证region在另外的TiKV中也有副本 。在三个副本中,只有一个副本负责读写,成为leader副本。其它的副本不能读写,复制同步leader副本。

MVCC:

MVCC实现数据库隔离性。

支持事务:

算子下推:

分布式数据库的优势,虽然数据存在多个节点中,会有一定的网络延迟,但每个节点都有CPU,每个节点可以处理一部分计算功能。

3. 列存组件-TiFlash

TiFlash 存的数据和TiKV里面的region是一样的,不过TiKV是行存储,TiFlash是列存储。

TiFlash也参与复制,TiFlash 的数据和TiKV是一样的,引入TiFlash 是为了分析型业务 的性能。

4.集群大脑 PD

当访问数据的时候,比如一条SQL 要进行全表扫描,经过TiDB Server后生成了执行计划,现在去找这张表组成的region 在个TiKV 或哪几个TiKV 上面? 这就需要 region和TiKV 的映射关系(我们叫他元数据),元数据就存储在PD节点上。

并且每个SQL 都有一个开始时间,也存储在PD上,我们叫它(TSO)

如果是事务提交,也会记录事务开始时间和事务结束时间。

当一张表存储在TiKV中,经过长期的运行,这张表越来越大, 这张表过分的集中在某个TiKV中,这时候DML会集中到某个TiKV中,所以 region和TiKV会以一定的时间间隔向PD汇报自己的状况,读写压力等。PD会根据信息进行调度。

相关推荐
StickToForever3 小时前
第4章 信息系统架构(五)
经验分享·笔记·学习·职场和发展
leegong231116 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql
Moonnnn.7 小时前
51单片机学习——动态数码管显示
笔记·嵌入式硬件·学习·51单片机
南宫生8 小时前
力扣每日一题【算法学习day.132】
java·学习·算法·leetcode
技术小齐8 小时前
网络运维学习笔记 016网工初级(HCIA-Datacom与CCNA-EI)PPP点对点协议和PPPoE以太网上的点对点协议(此处只讲华为)
运维·网络·学习
竹言笙熙8 小时前
代码审计初探
学习·web安全
日记成书8 小时前
物联网智能项目
物联网·学习
虾球xz9 小时前
游戏引擎学习第118天
学习·游戏引擎
gz927cool9 小时前
大模型做导师之开源项目学习(lightRAG)
学习·开源·mfc
世事如云有卷舒11 小时前
FreeRTOS学习笔记
笔记·学习