当前位置: 首页> 健康> 知识 > TiDB-从0到1-分布式存储

TiDB-从0到1-分布式存储

时间:2025/7/18 3:22:03来源:https://blog.csdn.net/MZZHAO23/article/details/139231468 浏览次数:0次

在这里插入图片描述

TiDB从0到1系列

  • TiDB-从0到1-体系结构
  • TiDB-从0到1-分布式存储
  • TiDB-从0到1-分布式事务
  • TiDB-从0到1-MVCC

一、TiDB-DML语句执行流程(增删改)

DML流程概要
在这里插入图片描述
1、协议验证
用户连接到TiDB Server后首先工作的是Protocol Layer模块,该模块会对用户身份、连接进行验证。
2、获取TSO
TSO是由PD Leader节点进行分配,TiDB在事务开始时会获取TSO作为start_ts,提交时再次获取TSO作为commit_ts,其最重要的目的是实现分布式事务的MVCC。
TSO为64位整型数值,由物理部分和逻辑部分组成,高48位为物理部分是unixtime的毫秒时间,低18位为逻辑部分是一个数值计数器。理论上每秒钟可产生2^18*1000=262144000个TSO。
3、SQL解析

  • Parse:词法分析(lex)和语法分析(yacc)
  • Compile:优化器
    在这里插入图片描述
    以插入数据为例,最终效果就是将关系型数据转变为KV型

    在这里插入图片描述
    4、日志落盘
    当用户侧执行commit提交数据后,会优先日志落盘(wal文件)
    5、数据落盘
  • 数据最先写入内存的memtable中
  • 当memtable到达一定量时会刷写到内存的immutable中
  • 当immutable到达一定量时会刷写到磁盘的rocksdb中
  • rocksdb底层也是以level 0向-level n不断聚合下推

在这里插入图片描述
以上就是一条DML在TiDB中的完整生命周期。

二、分布式存储

TiDB架构中的分布式存储主要是在TiKV中实现。
注意:一个TiKV中有两个RocksDB实例,一个存储Raft_Log,一个存储真正的KV数据

假设有三个TiKV节点,当用户commit后:
1、Propose阶段
在Leader节点形成Raft_Log
在这里插入图片描述
2、Append阶段
Leader节点将Raft_Log写入Raft_DB
在这里插入图片描述
3、Replicate阶段
Leader节点的Raft_Log复制到其他节点
在这里插入图片描述

4、Committed阶段
需要判断是否超半数阶段接受raft_log成功
在这里插入图片描述

5、Apply阶段
各个节点将Raft_Log转化为Raft_DB
在这里插入图片描述
到此用户端commit成功。

彩蛋

优秀的 LSM-Tree-KV数据库有很多,为什么TiDB选择了RocksDB?
其中很大一部分原因是因为RocksDB社区活跃度很好,正如之前说到“一个产品的社区生态可以更直接的反应产品力”。

在这里插入图片描述

关键字:TiDB-从0到1-分布式存储

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: