TiDB数据库架构——TiDB Server

news2025/7/5 13:36:03

TiDB Server架构

image-20221115194116992

TiDB Server 是SQL层,无状态,启动多个TiDBServer,均匀分摊,解析SQL,获取真实数据。

Protocol Layer、:负责客户端的连接。

Parse、Compile:负责SQL语句的解析和编译,生成SQL语句的执行计划。交给下面的Executor

Transaction、KV:负责事务的处理,

PD Client、TiKVClient:负责连接

schema load、worker、start job:负责online DDL语句的执行,建表,建索引

memBuffer:缓冲区,比如登入信息

cache table:实现热点小表缓存,提高表的吞吐量

TiDB Server 主要功能

  • 处理客户端的连接
  • SQL语句的解析和编译
  • SQL语句的解析和编译
  • 关系型数据与KV的转化
  • SQL语句的执行
  • Online DDL 的执行
  • 垃圾回收
  • 热点小表缓存V6.0

SQL语句的解析和编译

image-20221115195604499

生成AST语法树传递给Compiler模块,树形结构,进行编译和优化

image-20221115195747287

物理优化:走索引还是全表扫描,通过统计信息,进行一个优化

KV的转化

聚簇表

KEY:表号+主键

VALUE:数据

非聚簇表:使用主键作为KEY

image-20221115200512653

一个region,默认96MB,超过144MB,会进行分裂操作。

SQL读写相关模块

image-20221115200627001

DistSQL:为了减少耦合度过高的问题。复杂SQL经过DistSQL都会变成单表的SQL语句,然后发送到TiKV。

KV:只查一行或者0行,点查,走KV模块,复杂SQL走DistSQL

TiKV Client:通过这个将解析之后的SQL发送给TiKV

PD Client:发送TSO

在线DDL相关模块

image-20221115201313036

同一时刻只能有一个TIDBServer进行操作

DDL语句由start job接收,放入 TiKV job队列当中,所有的start job都可以接收,都放入队列当中,只有一个worker进行操作叫做owner,执行完就放入历史队列当中。在一段时间内是owner,过了这段时间可能会重新发起选举。这一做法可以防止宕机,一个TiDBServer宕机之后,别的TiDBServer可以继续执行DDL语句。

GC 机制与相关模块

GC life time:在所有TiDBServer当中会选举一个GC leader,在一个时间段的历史数据会进行保留,不在在时间段之内的数据就让GC回收。默认十分钟。

image-20221115202750425

TiDB Server的缓存

TiDB Server缓存组成

  • SQL结果
  • 线程缓存
  • 元数据,统计信息

TiDB Server 换粗管理(两个参数)

  • tidb_mem_qutota_query 每条SQL占用缓存的大小
  • oom-action 超过大小,返回错误或者记录日志

结果散落在多个节点,将数据放入缓存中,将各个节点的数据回合起来。

热点小表缓存

  • 表的数据量不大
  • 只读表或者修改不频繁的表
  • 表的访问很频繁

image-20221115205954504

要解决数据不一致的问题。

加入缓存指令:

ALTER TABLE users CACHE;

放缓存内的表的大小只能小于64MB

**租约:tidb_table_cache_lease=5,**在租约之内,其他TiDBServer不能够写入,阻塞写,不会阻塞读,必须在租约结束。租约之外写是直接写在TiKV之内的,读取在TiKV之内读取,速度大打折扣。在租约之内TiKV会重新载入最新的数据,refresh

应用

  • TiDB对于每张缓存表的大小限制为64MB
  • 适用于查询频繁、数据量不大、极少修改的场景
  • 在租约时间内,写操作会被阻塞
  • 当租约到期时,读性能下降
  • 不支持对缓存直接做DDL操作,需要先关闭
  • 对于表加载较慢或者极少修改的表,可以适当延长租约,保持读性能稳定。

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

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

相关文章

信息控制信息卷积

🍿*★,*:.☆欢迎您/$:*.★* 🍿 目录 背景

少儿编程 电子学会图形化 scratch编程等级考试四级真题答案解析(判断题)2022年9月

目录 2022年9月scratch编程等级考试四级真题 判断题(共10题,每题2分,共20分) 推荐资料

java学生作业带选课管理系统ssh

1.管理员具有对学校课程信息,教师信息,学生信息增删改查的权限 (1)可以录入学校所开课程,学生信息,教师信息; (2)可以对教师的开课信息进行增加,删除&#xf…

什么是 DeGods NFT 系列?

Nov. 2022, Vincy Data Source: Footprint Analytics - DeGods NFT Collection DeGods 系列有 10,000 个 Solana 铸造头牌的 NFT。 DeGods 持有者拥有访问 DeDAO 的权限和社区。 它在 1 月推出 DUST 协议,允许持有者质押他们的 DeGods NFT 并赚取 DUST。 10 月 …

cmake 工具 三 add_libary, set_target_properties,link_libary, target_link_libary

一起通过一个例子学一下 add_libary, set_target_properties,link_libary, target_link_libary 四个命令 首先创建如下的文件: 其中 build用于cmake编译,防止大量编译的中间文件污染代码文件夹具体可见cmake 构建工具…

手机端宝贝描述中每张图片的宽要在480到1500之间,最大高度为2500, 以下图片不满足

上图是近期小编与一位店主的聊天截图,从截图中我们可以知道,这位店主在使用复制软件来复制宝贝上传时出现了一些问题,下面,小编将上传出现的错误、分析过程及解决方法列示如下,希望能给其他店主一些帮助:查…

批量图片压缩怎么做?分享三招图片压缩怎么操作的方法

因为工作需要在电脑上保存大量图片的小伙伴们,是不是图片一下子把电脑内存占满了,可是要怎么做才能减少图片的占用空间呢?我们可以把图片压缩,这样子就可以保存更多的图片啦。还不清楚批量图片压缩怎么做的小伙伴们,让…

光点数据中台,解决高校信息整合难题_光点科技

目前,国家和相关部门对教育信息化高度重视,先后出台了多项政策和文件,要求加快教育信息化的发展步伐,高校信息化进入了快速发展期。 在此背景下,数据也将会成为高校信息化的核心资产,并对高校信息化的快速发…

【Big Data】解决Hive查询出现Java.lang.OutMemoryError.java heap space

一、Introduction 在使用Hive时,出现了以下的问题 错误的原因是资源分配不够,但是错误的原因有很多,需要去查看日志文件观察具体的错误。 日志文件位置在 /tmp/root/hive.log 由此我们知道具体的错误原因是JVM资源分配不够 接下来可以尝试…

PE格式:手写PE结构解析工具

PE格式是 Windows下最常用的可执行文件格式,理解PE文件格式不仅可以了解操作系统的加载流程,还可以更好的理解操作系统对进程和内存相关的管理知识,而有些技术必须建立在了解PE文件格式的基础上,如文件加密与解密,病毒分析,外挂技术等,在PE文件中我们最需要关注,PE结构,导入表,…

Tech Lead如何组建你的全明星团队

当你成为 Tech lead,意味着你不再只是团队中的普通一员。现在你是开发团队的Leader,换句话讲,这是一支你的团队。你需要费尽心思组建和打造你的团队! 组建搭配合理的团队 (图片来自于 pixabay) 作为Tech Lead,你要先…

Jmeter,将响应结果保存至csv文件,并读取csv文件

在做性能测试的时候,需要模拟多个不同的用户同时进行操作,此时可以将响应数据中的某些字段(比如token字段)提取出来,以供下一接口作为入参。 一、将响应结果中的字段提取,并保存至CSV文件【分为2个步骤】 …

Redis管理客户端,兼容Windows、Mac、Linux

真正的大师,永远都怀着一颗学徒的心! 一、项目简介 Redis管理客户端,兼容Windows、Mac、Linux 二、实现功能 支持自定义文本视图 支持哨兵支持 Hash List Set Zset搜索支持 支持自动更新 支持SSH 通道支持 支持精确搜索 单链接支持 支持Redis&g…

外观(门面)模式

思考外观模式 正常完成一个功能需要调很多个接口,外观模式就是组装这些接口为一个接口,对外提供这一个接口,用户调用这一个接口就能完成原来多个接口才能完成的功能,简化调用 1.外观模式的本质 外观模式的本质是:封装交…

用户管理系统(1)

1)用户管理项目:基本功能介绍 1)登录功能:只能是超级管理员管理员登录,普通用户无法进行登录 2)用户的列表页面:普通用户的列表页和超级管理员的列表页 3)条件查询:组合条件查询,不定规则的查询,指定名称,指定籍贯,指定…

相控阵天线(二):非规则线阵(稀布阵列、稀疏阵列、平方率分布阵列)

概述 非规则线阵主要包括以下情况: 1. 不均匀间距阵列: a)不均匀间距递变阵列:单元间距按照一定的系数递增; b)稀布阵列:阵元间隔不是固定的,没有规律; c)稀…

广州蓝景分享—「JavaScript」this关键字的五个重要事项

首先this 关键字是 JavaScript 中最令人困惑的部分之一,今天通过介绍有关它的五个重要事项来阐明其目的和用法。 1、它允许访问同一对象上的其他属性 在 JavaScript 中,函数可以是独立的单元,但它们也可以用作对象的值。 考虑下一个对象。 …

SpringFramework:循环依赖与三级缓存

循环依赖与三级缓存 文章目录循环依赖与三级缓存一、Spring 中的循环依赖问题1. Spring 中的循环依赖概述2. Spring 中的循环依赖的 5 种场景二、Spring 三级缓存1. spring 创建 bean 的流程2. 场景一:单例的 setter 注入3. 三级缓存4. 关于二级缓存三、循环依赖的其…

ELFK——ELK结合filebeat日志分析系统(2)

目录 一、filebeat 二、ELFK 1.原理简介 2.在ELK基础上部署filebeat ​​​​​​ELK 企业级日志分析系统(1)_Evens7xxX的博客-CSDN博客 紧接上一期,这期会介绍ELK结合filebeat的部署和使用 一、filebeat Filebeat,轻量级的…

Word编辑论文,实现1.题目、摘要、关键词为通栏,正文为双栏 2.首页底端添加通栏脚注,在脚注中写作者简介,并使其实现悬挂对齐效果

Q1. 如何使题目、摘要、关键词为通栏,而下面开始的正文为双栏? 将光标移动到最后一个关键词后 布局—分隔符—分节符(连续) 将光标移动到正文第一个大标题前 布局—页面设置—文档网格—文字排列—栏数设置为 2,操作…