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://xiahunao.cn/news/3032582.html

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

相关文章

【数据结构】图和基本算法

文章目录 1. 图的基本概念1.1 图本身的定义1.2 相关概念 2. 图的存储结构2.1 邻接矩阵2.2 邻接表 3. 图的遍历3.1 广度优先遍历(BFS)3.2 深度优先遍历(DFS) 4. 最小生成树4.1 Kruskal算法4.2 Prim算法 5. 最短路径5.1 单源最短路径…

【Linux】用户组、用户、文件权限(ugo权限),权限掩码,chmod,chown,suid,sgid,sticky,su,sudo

用户组 注意:普通用户只能查看有哪些组,不能创建/修改/删除,会提示:用户名 is not in the sudoers file.This incident will be reported. groupadd 用户组名新建用户组cat /etc/group查看有哪些组(普通用户可以操作…

关于DOCKER启动后如何添加新的端口映射

前段时间在用docker部署服务的时候发现,容器已经启动,但是需要新的端口映射(即容器在启动的时候只进行了部分的端口映射),经过查询资料后发现现在网上有2种方法,一中是修改json文件。另一种是将已经运行的容…

FreeRtos内核源码分析(九)——协程

目录 一、协程简介 二、协程工作机制 2.1 协程控制块结构 2.2 协程管理方式 2.3 协程调度方式 2.4 协程通信机制 三、协程状态及状态切换 3.1 协程状态 3.2 状态切换 四、协程创建 五、协程调度分析 5.1 源码分析 5.2 逻辑图分析 六、协程通信 6.1 协程发送消息…

Centos7 配置 DNS服务器

Centos 7 配置DNS服务器 环境描述: 一台服务器和一台用于测试的客户机 服务器IP:192.168.200.132 客户机IP:192.168.200.143 服务器配置 yum install bind bind-utils -y #安装软件包vim /etc/named.conf //编辑named主配置文件listen-on p…

【Redis】Redis键值存储

大家好,我是白晨,一个不是很能熬夜,但是也想日更的人。如果喜欢这篇文章,点个赞👍,关注一下👀白晨吧!你的支持就是我最大的动力!💪💪&#x1f4aa…

从新手到高手,教你如何改造你的广告思维方式!

想要广告震撼人心又让人长时间记住?答案肯定是“创意”二字。广告创意,说白了就是脑洞大开,想法新颖。那些很流行的广告,都是因为背后的想法特别、新颖。做广告啊,就得不停地思考,创新思维是关键。 广告思…

短视频赛道有哪些:成都鼎茂宏升文化传媒公司

短视频赛道有哪些:探索多元化的内容领域 随着科技的飞速发展和人们生活节奏的加快,短视频已成为现代人生活中不可或缺的一部分。它以其简短、直观、易于分享的特点,迅速占领了各个年龄层和社会群体的心智。然而,短视频的赛道并非…

Franz Electron + React 源码启动运行填坑指南

环境要求 安装miniconda python 环境electron/rebuild用得着,miniconda 默认自带的 python 是 3.11 版本,比较新; 安装virsual studio 2019 要把C桌面相关的都安装了,大概需要20G,不要安装到 C 盘,都安装到…

C++系统编程篇——Linux初识(系统安装、权限管理,权限设置)

(1)linux系统的安装 双系统---不推荐虚拟机centos镜像(可以使用)云服务器/轻量级云服务器(强烈推荐) ①云服务器(用xshell连接) ssh root公网IP 然后输入password ①添加用户: addus…

web前端框架设计第十课-自定义指令

web前端框架设计第十课-自定义指令 一.预习笔记 1.注册全局指令(先注册在使用) 2.注册局部指令(要找标签有的属性) 3.钩子函数 4.binding对象参数 二.课堂笔记 三.课后回顾 –行动是治愈恐惧的良药,犹豫拖延将不断滋…

在大型项目上,Python 是个烂语言吗?

在开始前我有一些资料,是我根据网友给的问题精心整理了一份「Python的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! python项目超过5万行&#x…

巩固学习6

正则表达式 又称规则表达式,Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a到z之间的字母)和特殊字符(称为“元字符”&…

3SRB2508-ASEMI三相整流桥3SRB2508

编辑:ll 3SRB2508-ASEMI三相整流桥3SRB2508 型号:3SRB2508 品牌:ASEMI 封装:SGBJ-5 最大重复峰值反向电压:800V 最大正向平均整流电流(Vdss):25A 功率(Pd):大功率 芯片个数:…

MySQL性能优化:MySQL中的隐式转换造成的索引失效

目录 前言数据准备SQL测试分析和总结 前言 数据库优化是一个任重而道远的任务,想要做优化必须深入理解数据库的各种特性。在开发过程中我们经常会遇到一些原因很简单但造成的后果却很严重的疑难杂症,这类问题往往还不容易定位,排查费时费力最…

NGINX SPRING HTTPS证书

服务器:xxx.xxx.xxx.56 客户端器:xxx.xxx.xxx.94##生成服务器证书和密钥容器 keytool -genkey -alias tas-server -keypass 250250 -keyalg RSA -keysize 2048 -validity 3650 -keystore D:\https证书\tas-server.jks -storepass 250250 -dname "C…

【电子学会】2023年12月图形化一级 -- 遇见春天

遇见春天 1. 准备工作 (1)选择背景Flowers; (2)删除默认角色小猫,选择角色蝴蝶Butterfly 2、小狗Dot; (3)角色小狗只保留三个造型:dot-a、dot-b、dot-c&a…

AI应用之智能体介绍

AI应用之智能体介绍 一、LLM介绍二、智能客服应用1,阿里智能能话机器人2,华为对话机器人3,公司基于讯飞知识库和讯飞大模型的智能客服 三、大模型应用平台介绍1,fastgpt2,毕昇3, 字节海外版(科学…

Django创建网站的地基

相关文档 1、为新网站创建一个文件夹(这里是:locallibrary) D:\django>mkdir locallibraryD:\django>cd locallibraryD:\django\locallibrary>dirVolume in drive D is 新加卷Volume Serial Number is B68C-03F7Directory of D:\dj…

01.认识HTML及常用标签

目录 URL(统一资源定位系统) HTML(超文本标记语言) 1)html标签 2)head标签 3)title标签 4)body标签 标签的分类 DTD文档声明 基础标签 1)H系列标签 2&#xff09…