TiDB 数据库核心原理与架构笔记

 

1.功能介绍

TiDB Server集群(无状态,不存储数据)

处理客户端发送的sql语句,进行解析编译优化,生成执行计划

如果是insert要将表的数据转换为key和value的形式,向TiKV存储

执行online DDL

每隔十分钟左右进行垃圾回收(GC)将历史版本数据删除

可水平扩展,增强并发处理能力

TiKV

存储数据(数据持久化),存储引擎集群,默认创建三副本(只有一个leader可以读写,其他都不可以读写,其他的跟着leader变),高可用性

存region(行存)

rocksdb单机的Key-Value存储引擎(内部使用这个数据库保障TiKV的数据持久化)

rockdbkv(rocksdb实例):将表数据转换为key-value的形式存储在rockdb实例中

rockdbraft(rocksdb实例):存储表的增删改等指令

Raft协议(保障了三副本的强一致性)

MVCC(保障了其他操作可以正常执行,例:读的是修改前的数据)

Transaction事务层(支持事务)

算子下推实际上是一个分布式计算的模型

TiFlash

存储数据,存储引擎集群

存region(列存,擅长统计分析数据)

TiKV行存更多承载在线交易型业务OLTP(事务型)

TiFlash更多承载分析型业务OLAP(暴力扫描)

HTAP(OLTP,OLAP)支持

region : 96M->144M

数据库表切分,分布存储在TiKV

PD:PlacementDriver

集群的大脑

存储想要的表在TiKV,TiFlash的对应位置(这些信息叫做:region 的元数据:表在哪些TiKV,TiFlash上分布信息)region与TiKV,TiFlash的对应关系

存储查询每条sql执行的开始时间,结束时间(TSO对时间进行标识,计时器:对一个事务有开始的TSO有结束的TSO)

体系特点:

水平扩容或缩容

金融级高可用

实时HTAP

云原生的分布式数据库

兼容MySQL5.7协议

题目:

2.TiDBServer详情

TiDB server 架构

功能:

处理客户端的连接(Protocol Layer)

SQL 语句的解析和编译(Parse,Compile)生成执行计划交由Excutor进行执行

AST语法树

关系型数据与 KV 的转化

聚簇表:标号+原表主键做主键(主键唯一)

region(默认大小96M->144M,超出分裂,分布式存储在TiKV中)

非聚簇表(自动生成主键)

SQL 语句的执行

DistSQL将复杂sql的执行计划转换为单表计算任务组合发送给TiKV,涉及一张表涉及多个region

简单查询,点查走KV就不走DistSQL

Transaction将开始时间和结束时间(TSO)发送给PDClient

在线 DDL 的执行

对于整个tidb数据库来说,同一时刻只能有一个TiDBServer做DDL操作(worker)

owner执行job,不是固定的,有任期时长,轮换当owner,谁当owner谁复制执行job队列的DDLJob

schema load将最新的所有的表信息同步到内部的缓存中,好根据这些信息执行jobqueue里面的job

TIKV持久化存储

垃圾回收(定期清理过期版本的数据)

GCLifeTime(默认十分钟)保存当前时间到savepoint时间的数据,其他的进行清除

热点小表缓存 V6.0 (cacheTable)进一步热点缓存区

解决数据可能不一致的问题(缓存租约,既存在使用时间,租约时间内,可以读,无法进行写操作)

应用:

TiDB 对于每张缓存表的大小限制为 64 MB

适用于查询频繁、数据量不大、极少修改的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值