TiDB学习2:TiDB Sever

目录

1. TiDB Server架构

2. sql语句的解析和编译

2.1 Parse

​编辑 2.2 compile

3. 行转化为KV对(聚簇表)

​编辑4. SQL 读写相关模块

4.1 DistSQL(复杂查询)

4.2 KV(简单查询)

5. 在线DDL相关模块

6. GC机制与相关模块

7. TiDB Server的缓存

8. 热点小表缓存

9. 总结


1. TiDB Server架构

  • protocol layer:处理客户端的连接
  • Parse、Compile:负责sql解析,生成sql执行计划,生成sql执行计划后,Excutor、DistSQL、KV分批的执行sql的执行计划
  • Transaction、KV:负责事务相关执行
  • PD client:负责与PD,TSO是通过PD Client去和PD进行交互得到
  • TiKV Client:负责与TiKV的交互,所有的sql请求都是通过TiKV Client去对TiKV进行交互
  • schema、worker、start job:主要负责online DDL,不会阻塞读写
  • memBuffer:负责缓存读出来的数据及元数据,登录的认证信息,统计信息等

TiDB Server 主要功能

  • 处理客户端的连接(protocol layer)
  • SQL语句的解析和编译(Parse、Compile)
  • 关系型数据与 KV 的转化
  • SQL语句的执行(Excutor)
  • Online DDL 的执行(schema load、worker、start job)
  • 垃圾回收(GC)
  • 热点小表缓存 V6.0(cache table)

2. sql语句的解析和编译

2.1 Parse

 2.2 compile

3. 行转化为KV对(聚簇表)

表ID+主键值为KEY,行里面其他值作为Value,存放在region里面

当一个region的大小达到144M时就分裂为两个region,以region为单位就可以分布式的存在各个TiKV Node

4. SQL 读写相关模块

4.1 DistSQL(复杂查询)

执行计划分为两种,第一种是较为复杂的查询,比如join、嵌套查询等等,为了避免复杂查询对TiKV存取耦合性高,把TiKV请求封装起来提供一个简单的select方法变为一个一个单表操作的计算任务的组合发送给TiKV

4.2 KV(简单查询)

比如主键、唯一键等值查询

DistSQL和KV都会经过TiKV Client发送给TiKV集群

transaction提交会向PD获取一个TSO 

5. 在线DDL相关模块

同一时间只能有一个TiDB Server(owner)做DDL操作

  • start job:接收DDL语句,接收后会放在TiKV一个队列中
  • wokrer:owner中的worker模块去取job queue中第一个job然后执行,执行完后把该job放在history queue中,然后再去取下一个job。每个owner有任期,任期结束后会选举新的owner
  • schema load:TiDB Server成为owner后,将最新的表schema信息同步到内部的缓存中,wokrer根据这些信息去执行job queue中的job

job放在TiKV中持久化存储

6. GC机制与相关模块

  • 其中一台TiDB Server是GC leader
  • 假如现在是14:00,safe_point=10:00,那么14:00到10:00的历史数据是保留的,10:00之前的GC就回收
  • GC每10分钟触发一次(GC life time) ,默认值

7. TiDB Server的缓存

TiDB Server 缓存组成

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

TiDB Server 缓存管理

  • tidb_mem _quota_query(控制每条查询默认使用的缓存)
  • oom-action(当查询使用的缓存超过了tidb_mem _quota_query值的处理操作,记录到日志或者报错)

8. 热点小表缓存

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

alter table users CACHE;

tidb table cache lease = 5,默认值5秒,在5秒内都不能修改这张表,5秒后可以修改,并且修改是在TiKV中,不管在5秒内还是5秒后都可以读取,5秒内在cache table中读取,5秒后在Tikv中读取,当修改完成后,重新refresh到cache table中

热点小表缓存-应用

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

9. 总结

  • TiDB Server 的整体架构
  • TiDB Server 的主要功能
  • TiDB Server 的进程与缓存 

 来自TiDB官方资料

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

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

相关文章

c++ fs::rename

【C 17 新特性 文件管理】探索C Filesystem库:文件和目录操作的全面指南(一)-阿里云开发者社区 fs::rename("old_directory", "new_directory"); 底层原理: 在Linux系统中,这通常通过rename系统调用来实现。…

做好串口控制是源代码防泄密的基础

在信息化时代,数据安全与保密工作的重要性日益凸显。尤其是在涉密单位,如军工、政府、金融等行业,防泄密工作直接关系到国家安全、社会稳定和企业利益。串口作为计算机与外部设备通信的重要接口,其安全性同样不容忽视。本文将探讨…

react18【系列实用教程】useMemo —— 缓存数据 (2024最新版)

为什么添加了 memo &#xff0c;子组件2依然重新渲染了呢&#xff1f; 因为父组件向子组件2传递了引用类型的数据 const userInfo {name: "朝阳",};<Child2 userInfo{userInfo} />memo() 函数的本质是通过校验Props中数据的内存地址是否改变来决定组件是否重新…

TEMU电商行情分析:未来趋势与盈利机遇探讨

近年来&#xff0c;跨境电商行业风起云涌&#xff0c;其中TEMU作为新兴力量&#xff0c;其市场表现备受关注。那么&#xff0c;TEMU电商现在的行情究竟如何?对于卖家而言&#xff0c;是否仍然是一个能够赚钱的平台呢? 首先&#xff0c;从市场趋势来看 TEMU电商正处于一个快速…

如何设计学术会议海报?

在参加学术会议的时候&#xff0c;制作一份会议海报来展示你的研究内容是十分必要的。海报是你与别人交流研究成果时的关键部分&#xff0c;也是成功科研生涯的重要元素。海报本身自带许多优秀的特质&#xff1a;思路清晰、内容精练&#xff0c;并且极易引起他人的兴趣。 一、…

vant添加列表, 日期选择总是填充到最后一个组内原因

添加多个行程, 无论在哪个行程上修改时间, 时间总是只显示在最后一个行程里 错误代码: <div class"journey"><divv-for"(item, index) in ruleform.hrms_business_item":key"index"><div class"journey-title">&l…

Python执行MYSQL SQL文件

很多情况下我们需要Python来执行SQL文件&#xff0c;但是一般库没有提供这些功能&#xff0c;直接执行经常会出错&#xff0c;这里分析各种情况下执行SQL语句的处理。如果你没有时间的话&#xff0c;直接跳转查看[第三点](#3. 包含DELIMITER的语句)。 准备工作 这里采用**mys…

Linux之函数应用实例--加法器

一、创建一个对2个整数求和的加法器 首先&#xff0c;定义了一个名为 adder 的 Bash 函数&#xff0c;该函数接受两个参数 $1 和 $2 并输出它们的和。 function adder { echo $[ $1$2 ] } 注意&#xff1a; function 关键字是可选的。在 Bash 中&#xff0c;可以简单地使…

近程无人机平台技术体系

近程无人机平台技术体系 1、技术体系1.1、专用技术体系固定翼技术体系旋翼技术体系复合翼技术体系扑翼技术体系倾转旋翼技术体系1.2、通用技术体系2、固定翼技术体系2.1、固定翼无人机介绍2.2、优势与局限2.3、固定翼专用体系介绍3、旋翼技术体系3.1、旋翼无人机介绍3.2、优势与…

前端 JS 经典:数组去重万能方法

前言&#xff1a;只需要掌握这一个方法&#xff0c;就可以对有任何重复的数据数组&#xff0c;进行去重了。 可以自己思考下&#xff0c;怎么对以下对象数组去重&#xff1a; const arr [{ a: 1, b: 2 },{ b: 2, a: 1 },{ a: 1, b: 2, c: { a: 1, b: 2 } },{ b: 2, a: 1, c:…

Geotrust哪种通配符证书800

Geotrust是成立了几十年的CA认证机构&#xff0c;每年都会通过WebTrust审计&#xff0c;旗下拥有各种类型的SSL数字证书产品&#xff0c;例如单域名SSL证书、多域名SSL证书和通配符SSL证书等。而为了更好地区分SSL证书产品&#xff0c;Geotrust旗下还分了几个子品牌&#xff0c…

解决项目下的lib包没有打进jar的问题

背景 项目在本地运行正常,发布到测试环境就不行,测试环境报缺少lib包下的类 解决方案 在项目的 pom.xml 文件中 <build></build> 标签下的 <resources></resources>标签中&#xff0c;加入以下代码&#xff0c;如&#xff1a; <build><res…

电池的一些UL认证标准

1、如今手机使用频率越来越高&#xff0c;充电器广泛地应用于交通上&#xff0c;为消费者提供充电的方便&#xff0c;汽车上的车充与我们产生了密切的联系&#xff0c;如果车充质量不好&#xff0c;可能会导致严重的后果&#xff0c;因此UL 2089标准着重于防止车充电击、燃烧&a…

MySQL存储引擎介绍

查看MySQL数据库中创建表的信息 如上图所示&#xff0c;当我们使用命令show create table server_info\G;可以显示我们所创建的表的信息&#xff0c;只显示两个字段&#xff0c;第一个字段是Table 即是创建的表的名称&#xff0c;第二个字段是Create Table即是创建的表的字段的…

Python中logging模块的使用

在Python中&#xff0c;logging模块提供了一个灵活的日志记录系统&#xff0c;用于将程序的输出信息分门别类地发送到不同的目的地。Logger对象是这个系统的核心&#xff0c;它负责创建日志消息。默认情况下&#xff0c;如果没有特别配置&#xff0c;Logger会将日志输出到标准错…

Redis过期删除策略和内存淘汰策略有什么区别?

Redis过期删除策略和内存淘汰策略有什么区别&#xff1f; 前言过期删除策略如何设置过期时间&#xff1f;如何判定 key 已过期了&#xff1f;过期删除策略有哪些&#xff1f;Redis 过期删除策略是什么&#xff1f; 内存淘汰策略如何设置 Redis 最大运行内存&#xff1f;Redis 内…

buildroot添加ssh功能

在制作了自己的buildroot生成的根文件系统之后&#xff0c;是没有ssh服务的&#xff0c;需要自行添加。 在buildroot的menuconfig里&#xff1a; Target packages -> Networking applications -> openssh 重新编译&#xff0c;还不能通过电脑连接&#xff0c;还需配置并…

xorg.conf 设置 集显 独显 英伟达 Ubuntu 风扇调速

使用集显做显示&#xff0c;使用独显做机器学习&#xff0c;那么xorg.conf如何配置&#xff1f; 如果配不好&#xff0c;那么会卡在欢迎登录界面&#xff0c;据说也会限制风扇调速的功能。 既然GPT时代了&#xff0c;那么我们就用AI加速一下&#xff0c;直接lspci | grep -i v…

ANSYS许可监控​

在工程设计与仿真领域&#xff0c;ANSYS软件作为行业翘楚&#xff0c;为企业提供了强大的支持。然而&#xff0c;随着业务规模的扩大和软件版本的升级&#xff0c;如何有效地监控ANSYS许可证的使用情况&#xff0c;确保合规性和资源的高效利用&#xff0c;成为企业面临的重要问…

react 图片没有加载出来的问题

react 图片没有加载出来的问题 我原来是这样写的 <Layout><Sider><imgsrc"../images/login/topdivbg20221202.png"/></Sider><Content><Menu onClick{onClick} selectedKeys{[current]} mode"horizontal" it…