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.hqwc.cn/news/702108.html

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

相关文章

分布式搜索-elaticsearch基础 安装es

这里是在虚拟机的Linux系统里安装es的教程: 1.创建网络 在Finashell终端输入指令 docker network create es-net 2.将es.tar安装包放入tmp的目录下 输入指令加载镜像:docker load -i es.tar 3.再运行docker 命令 docker run -d \--name es \-e "ES_JAVA_O…

先有JVM还是先有垃圾回收器?

是先有垃圾回收器再有JVM呢,还是先有JVM再有垃圾回收器呢?或者是先有垃圾回收再有JVM呢?历史上还真是垃圾回收更早面世,垃圾回收最早起源于1960年诞生的LISP语言,Java只是支持垃圾回收的其中一种。下面我们就来刨析刨析…

windows下mysql5.6下载安装(多实例安装)

目录 1、下载 2、安装步骤 3、mysql多实例安装 1、下载 http://dev.mysql.com/downloads/windows/installer/5.6.html 2、安装步骤 我们采用自定义安装模式:选择32位或64位 默认即可: 说明,如果没有该页面就上一步,选择高级选…

Java代理模式的实现详解

一、前言 1.1、说明 本文章是在学习mybatis框架源码的过程中,发现对于动态代理Mapper接口这一块的代理实现还是有些遗忘和陌生,因此在本文章中就Java实现代理模式的过程进行一个学习和总结。 1.2、参考文章 《设计模式》(第2版&#xff0…

SQL——SERVER的建表主要操作

目录 一:数据存储问题 1.表的相关数据 2.表,字段,记录 二:建表 1.创建表头 2. 数据类型 3.保存数据 4.数据冗余 5.使用命令重置表 7.设置主键 一:数据存储问题 1.表的相关数据 表是数据库的基本单位&…

scratch求和 2024年3月中国电子学会图形化编程 少儿编程 scratch编程等级考试四级真题和答案解析

目录 scratch求和 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、pytho…

Nginx生产环境最佳实践之配置灰度环境

你好呀,我是赵兴晨,文科程序员。 下面的内容可以说是干货满满建议先收藏再慢慢细品。 今天,我想与大家深入探讨一个我们日常工作中不可或缺的话题——灰度环境。你是否在工作中使用过灰度环境?如果是,你的使用体验如…

遇到难题 暗区突围掉宝Twitch绑定关联账号显示404

Twitch作为一个广受欢迎的直播平台,经常会举办各种与游戏相关的互动活动,如“掉宝活动”,其中就包括了与《暗区突围》的合作。这类活动允许观众在观看指定的Twitch直播时,通过将他们的Twitch账号与《暗区突围》游戏账号绑定&#…

openlayer实现ImageStatic扩展支持平铺Wrapx

地图平铺(Tiling)是地图服务中常见的技术,用于将大尺寸的地图数据分割成许多小块(瓦片),便于高效加载和展示。这种技术特别适用于网络环境,因为它允许浏览器只加载当前视图窗口内所需的地图瓦片…

【MySQL01】【 Explain 命令详解】

文章目录 一、前言二、Explain 概览三、Explain 详解1. id2. select_type3. table4. type5. possible_keys6. key7. key_len8. ref9. rows10. filtered11. extra 列 四、补充1. EXPLAIN 扩展1.1 Extend EXPLAIN1.2 JSON 格式的执行计划 2. Intersection、Union、Sort-Union 索引…

基于Springboot的知名作家信息管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的知名作家信息管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系…

_pickle.UnpicklingError: STACK_GLOBAL requires str

导致这个报错的原因是我跑yolo的时候修改数据集了,里面的label.cache没有删除,咱只要删除掉缓存就行!! 我这里是已经删除掉了,所以图片里面没有,一般就是在箭头所示位置有.cache文件的