TiDB进阶篇-TiKV架构

news2025/1/24 17:59:10

简介

简要的介绍下TiKV的架构。

底层存储RocksDB

RocksDB的写操作

 

在写入WAL的时候为了防止操作系统写入的时候有缓存,要设置操作系统的参数sync_log=true,也就是说只要有数据就执行刷写到磁盘,就不会存储到操作系统的缓存了。MemTable的数据到达一定的大小以后,就会刷写到immutable里面。

level 0的数据就是 immutable是什么数据就会存储什么数据。

如果level 0到达4个以后,就会启动内部的compation操作(数据压缩加数据排序的操作),(每一层的level数据都是排好顺序的),查找的时候是根据二分查找的方法进行对应的数据查找,写的时候都是顺序写,包括它的删除操作也是一条写记录,但是查找的时候,就会过滤掉有删除标志的数据。

RocksDB的读操作

Block Cache是读取数据的缓存。每一个level里面的SST文件都记录了一个最大值和最小值,查找数据的时候,先比对最大值和最小值,如果在这个范围内,那么就会使用二分查找的方法进行数据查找。

RocksDB的Colume Families

这里也就是说他们的key-value一类的数据放在不同的Colume Family中,如果不执行Colume Family那么默认就会到default的Colume Family中,这个就是RocksDB的分片技术。

分布式事务 

分布式事务前提

1.先从PD得到一个开始的时间。

2.如果在用户commit的时候锁的信息才写入到TiKV中,那么这个就是乐观锁(这里之前修改的数据是在内存,只有用户commit的时候才会写入锁的信息)在用户commit的时候就会执行prewrite步骤。

3.如果想修改的操作提前让其他的用户知道,那么在用户修改的时候就已经把锁的信息写入到 TiKV中。

4.在写任何操作的时候,都会在default的后面直接添加数据,包括增删改查。

5.write里面的Colume Family信息是最近的一次数据完成的事务操作的记录信息。write记录以后,然后在Lock的Colume Family添加一条删除锁的记录。

6.用户读取信息的时候会先在write中查找最新的完成操作的记录,然后再到default中查找数据。

注意事项

 

TiDB解决分布式事务的原理

1.prewrite操作会写入对应节点的default里面,并且会写入Lock数据(分布式事务的第一行加主锁,其他的条数加从锁,也就是存储了主锁的指向)。

2.在主锁节点的事务完成以后,如果从锁的数据节点发生了宕机,那么数据节点重启以后,会找到主锁对应的节点是否事务完成了,如果完成了,那么他会更具主锁上面的事务是否完成来修复自己节点的数据。

MVCC(解决事务上锁读数据的问题)

也就是说自己事务读取的数据是自己执行时间之前的数据,多版本并发控制来管理每一个客户端,不同时间看到不同的数据。

Raft和Muti Raft(分布式数据一致性) 

 

日志复制

 

 

raft的commit以后并不代表用户的commited已经成功了。 

 

当数据真正写入到rocksdb kv以后,那么表示用户的commited完成了。 

 

Raft Leader选举 

 

选举相关超时参数 

 

TiKV写入 

数据写入

TiDB Server的写请求会发送给raftstore pool。

 raftstore pool会把写请求,装换成raft log。

使用raft协议同步数据。

然后执行raft 的commit ,apply pool将raft log写入到rocksdb kv中,那么用户的commit 就完成了。

数据读取 

数据读取的时候要找到region的leader位置。

ReadIndex Read 

读取数据的时间线图 

数据只有apply以后才能够查看到。

Lease Read 

由于读取数据的时候要找到对应的leader才行,那么要想优化。

在指定的心跳时间内,那么在重新选举的时候,那么它都是leader。

Follower Read 

上面的两种都只能读取leader的数据,这种就可以读取Follower的数据。

 

在leader的修改

在follower

 

在所有的修改比如1-97的修改,它们一定都会在 1-97之前

Coprecessor

如果不使用Coprecessor,那么很多的聚合操作都会给TiDB

 

有了Coprecessor,那么计算就会下推到TiKV节点(算子下推)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/413645.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python】无限逼近求积分

✨博文作者 wangzirui32 💖 喜欢的可以 点赞 收藏 关注哦~~ 👉本文首发于CSDN,未经许可禁止转载 Hello,大家好,我是wangzirui32,今天我们来学习如何用Python无限逼近求积分,开始学习吧&#xff…

krita源码提供了Tarball 和KDE Repository两套源码的区别

krita系列文章目录 文章目录krita系列文章目录前言一、Tarball 和KDE Repository区别是什么?二、使用步骤前言 krita官方主页 krita官方下载界面 krita源码提供了Tarball 和KDE Repository两套源码,我一下就懵圈了,不知道两者的区别 一…

第二章 自然语言处理与单词的分布式表示

目录2.1 自然语言处理(Natural Language Processing,NLP)2.2 同义词词典2.2.1 WordNet2.2.2 同义词词典的问题2.3 基于计数的方法2.3.1 基于 Python的语料库的预处理2.3.2 单词的分布式表示2.3.3 分布式假设2.3.4 共现矩阵2.3.5 向量间的相似…

有哪些中西合璧的建筑设计?

所谓中西合璧,中即中华文化,体系繁多,源远流长,浩如烟海,是世界三大文化体系之一,在历史上曾是东亚文化的中心,一度影响欧洲;西即西方文化,西方物质文明和精神文明&#…

【JSP学习笔记】1.JSP 教程、简介及开发环境搭建

前言 本章介绍JSP的教程、简介及开发环境搭建。 JSP 教程 JSP 与 PHP、ASP、ASP.NET 等语言类似,运行在服务端的语言。 JSP(全称Java Server Pages)是由 Sun Microsystems 公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户…

2022国赛30:windows脚本题解析

大赛试题内容: ( 九) ) 脚本 【任务描述】 为了减少重复性任务的工作量,节省人力和时间,请采用脚本,实现快速批量的操作。 1.在 windows4 上编写 C:\CreateFile.ps1 的 powershell 脚本,创建20 个文件 C:\test\File00.txt 至 C:\test\File19.txt,如果文件存在,则首先删除…

Servlet初始化参数设置\获取,全局初始化参数的设置、获取

之前在学习SpringMVC、SpringSecurity时,会用到Filter,需要对Filter进行参数配置,而Filter本质上也是一个Servlet,然后对Servlet设置初始化参数已经忘记了,所以打算重新回顾并整理Servlet这一部分的内容(虽…

[Netty源码] 编码和解码相关问题 (十二)

文章目录1.编码和解码的介绍2.相关继承3.解码器分析3.1 ByteToMessageDecoder基类3.2 FixedLengthFrameDecoder3.3 LineBasedFrameDecoder3.4 DelimiterBasedFrameDecoder3.5 LengthFieldBasedFrameDecoder4.编码器分析4.1 解码过程分析4.2 writeAndFlush方法分析4.3 MessageTo…

2007-2020年国际产权指数InternationalPropertyRightsIndex(IPRI)IPRI

2007-2020年国际产权指数InternationalPropertyRightsIndex(IPRI)IPRI 1、来源:国际产权联合会 International Poverty Right Alliance 2、时间:2007-2020 3、范围:全球 4、指标说明: country、region、score、annual change…

提高软件测试效率的6大注意事项

1、测试策略非常重要 测试策略的基础是风险评估,我们需要通过失效概率和失效影响两个维度,对风险进行高、中、低的区分和可能性的判断。如CoCode开发云能够根据风险影响等级,自动计算出风险系数,并对风险进行优先级划分。而系数超…

项目管理:我们每个人都是管理者

项目管理的技能在生活中时时能用到、处处可锻炼。只要有心,项目成员一样可以学习和实践项目管理知识,也可以说,我们每个人都是管理者。 1、管理是职能而不是职位 有的人认为项目管理只是管理者应该学的,其实不是这样的&#xf…

卷积神经网络底层原理

1.卷积神经网络底层原理 声明:以下为《大话计算机》作者冬瓜哥课程视频截图,仅供学习 1.1卷积 一张图经过一种卷积核(核函数)滑动窗口进行卷积运算后得到一张特征图,这只是这种卷积核视角下看到的特征。所以我们需要多…

一起学 WebGL:图形变形以及矩阵变换

之前绘制了三角形,我们现在给它做一个变形操作。 对一个三角形进行变形,其实就是重新这个三角形的三个顶点的位置,计算完后再绘制出来,相比原来就发生了变形。 变形常见的有位移、选择、缩放。位移,其实就是给每个顶…

中国版ChatGPT即将来袭-国内版ChatGPT入口

必应chatGPT入口 目前并不存在“必应ChatGPT”这个概念。必应(Bing)是Microsoft公司推出的一款搜索引擎,而ChatGPT是OpenAI开发的自然语言处理技术,它们是两个不同的产品品牌。 不过,Microsoft也在自然语言处理领域里…

Microsoft 365管理和报告工具

在管理 Microsoft 365 设置的过程中,本机Microsoft 365 功能可能无法满足你的需求。M365 Manager Plus 具有复杂的功能,使 Microsoft 365 管理毫不费力。它提供基于功能的管理,因此你可以单独管理 Microsoft 365 组件。 使用 M365 Manager P…

进程的概念以及PCB的概念

在linux上进程是非常重要的知识点,今天我自我发表浅见。 可执行程序与进程 当在linux上编译完毕一个源文件生成可执行程序,这个时候这可执行程序只能称为普通文件,还不能定义为进程,在加载在内存中后才可称为进程,那…

次优二叉查找树(次优查找树)_递归和非递归实现_20230414

次优二叉查找树(次优查找树)-递归和非递归实现 前言 当有序表中的各记录的查找概率相等的时候,采用折半查找效率可以提升查找性能;如果有序表中的各记录的查找概率不相等,那么折半查找就不再适用。 如果只考虑查找成功的情况&a…

Robocup 仿真2D 学习笔记(四)阵型编辑

一、阵型文件介绍 阵型文件里设置的是球员在比赛中的跑位点 基于helios base的阵型文件,在目录/src/formations-dt中 阵型的调用在/src/strategy.cpp 文件: before-kick-off.conf 是球员上场之后的阵型 (或进球等待开球) no…

有限元基础编程-何晓明老师课件-一维程序实现matlab

文章目录前言一、主程序二、一维有限元求解程序-框架三、组装刚度矩阵assemble_matrix_from_1D_integral.m2.1 算法2.2 get_standard_gauss_1D.m2.3 get_Gauss_local_1D.m前言 只是为方便学习,不做其他用途,课程理论学习来自b站视频有限元基础编程-何晓明…

RT-Thread线程管理以及内核裁剪

RT-Thread线程管理以及内核裁剪 1. RTOS概述 1.1 RTOS的定义 实时操作系统(Real-time operating system, RTOS),又称即时操作系统,它会按照排序运行、管理系统资源,并为开发应用程序提供一致的基础。 实时操作系统与…