PCTA 认证考试学习笔记分享——《Lesson 03—TiKV》

9 篇文章 0 订阅
9 篇文章 1 订阅
本文详细解读了TiKV如何利用RocksDB进行数据持久化,涉及写操作、查询策略、分布式事务的两阶段提交机制以及MVCC的设计。还介绍了TiKV-Raft的日志复制和Leader选举,以及数据写入和读取的过程,以及Coprocessor的协同处理器功能。
摘要由CSDN通过智能技术生成

Lesson 03—TiKV



在这里插入图片描述



一、TiKV 持久化


在这里插入图片描述

TiKV 数据持久化靠RocksDB实现。

RocksDB介绍:


在这里插入图片描述

RocksDB写操作:


在这里插入图片描述

RocksDB写入磁盘的操作:

先把WAL直接写入磁盘日志中,MemTable中追加到最大值后,就开始转存到immutable MemTable。RocksDB重新开辟一个MemTable。

immutable Mentable 是刷入磁盘的中间状态,防止写入阻塞。immutable Mentable 达到5个以后,会限速。


在这里插入图片描述

Level 0 是 immutable MemTable 的复刻,内容一样。达到4个以后,会向下一层走,这个过程叫做 compaction

删除操作:只写入Delete语句,不去真正删除。更新操作同理。


RocksDB 查询操作:


在这里插入图片描述

查询操作:只查询最新的值。

最近最常用的数据在Block Cache中,不在的话,就去MemTable,再去immutable MemTable,最后再去磁盘。

在SST文件中对文件进行排序,采用二分查找法。

bloom Filter:判定在的话可能在,不在的话肯定不在。

RocksDB 列簇(CF):


在这里插入图片描述

共用日志文件。



二、分布式事务


在这里插入图片描述

两阶段提交:

第一阶段,prewrite 修改数据(TiKV 节点用三个列簇来保存)和锁信息,写入TiKV节点中。

第二阶段,commit 到PD中去要时间,也就是结束时间。

在写入之前,别人感知不到,叫做 乐观锁;提前将锁写入TiKV节点中,叫做悲观锁。

第一行加主锁,之后都是追随主锁。


在这里插入图片描述

Default:放修改数据

Lock:放锁信息

Write:放提交信息和小于255字节的修改信息。

在这里插入图片描述


只为分布式事务的第一行加锁。



三、MVCC


在这里插入图片描述


在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

查询的话先到Write中找最近的值,再去Default中找到。

写数据的话,先Write ,再Lock,有锁就写不了,没锁就可以写。


四、TiKV-Raft


日志复制:


在这里插入图片描述

Region是一个逻辑概念。Region 默认初始大小96M,涨到144M时会分裂。


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

  1. Propose:外面的客户端写入raft log。

  2. Append:写到本地RocksDB log 中,。

  3. Replicate:将 Leader 中的日志分发到其它 follower 中。

    append:其它节点也持久化到RocksDB 中。

  4. committed:返回一个响应值,当大多数(超过一半)follower region反馈提交成功。Raft 日志的commited,而不是用户的commited。

  5. Apply:将 Raft log 写入RocksDB KV中,这时候返回用户的Commited。


Leader 选举:


在这里插入图片描述

term :时间段,没有固定长度。

每一个 Region 有一个计时器,election timeout = 10s,可自行设置。

收到候选者的请求后,如果term大于自己,就会投一票。

在这里插入图片描述

heartbeat time interval = 10 s

在时间内,收不到心跳信息,就会判定leader挂了,然后发起一个选举。

在这里插入图片描述

election timeout + random。

在这里插入图片描述

Election timeout:多少个ticks之后发起选举。

Heartbeat timeinterval: 发送心跳间隔时间,默认1s。



五、数据写入和读取


数据写入:


在这里插入图片描述

raftstore pool:日志线程池

apply pool:日志解析线程池


在这里插入图片描述

在这里插入图片描述

  1. 先去PD查数据存放位置
  2. 读的时候发心跳确认是否为Leader。

数据读取:


在这里插入图片描述


增加 readindex 用来记录当前 commit 的位置。

增加 Applyindex 用来记录当前 apply 的位置。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


Leader:

在这里插入图片描述

Follower:

在这里插入图片描述



六、Coprocessor


Coprocessor——协同处理器

在这里插入图片描述

算子下推:

  1. 物理计算
  2. 分析数据
  3. 统计信息


    在这里插入图片描述



七、跳转链接


下面是我的笔记链接:


Lesson 02—TiDB Server

Lesson 03—TiKV

Lesson 04—Placement Driver

Lesson 05—TiDB 数据库 SQL 执行流程

Lesson 06—TiDB 数据库 HTAP 概述

Lesson 07—TiFlash

Lesson 08—TiDB 6.0 新特性

Lesson 09—TiDB Cloud 简介


PCTA 认证考试——保姆级经验分享

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值