TiDB学习2:TiDB Sever

news2024/12/29 10:33:15

目录

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.coloradmin.cn/o/1680058.html

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

相关文章

财富增长新途径:副业赚钱方法全攻略

探寻财富之路:多元化赚钱途径解析 在追求财富的道路上,每个人都在以自己的方式前行。然而,正如古人所云:“君子爱财,取之有道。”今天,我将为您揭示一些新颖且实用的赚钱途径,希望能为您的财富积累之路注入新的活力。 1、视频内容的创作与分享 在这个视频内容为王的时…

Benedict Evans:Ways to think about AGI思考 AGI 的方法:

​Benedict Evans本文发布于2024 年 5 月 4 日 How do we think about a fundamentally unknown and unknowable risk, when the experts agree only that they have no idea? 当专家们一致认为他们一无所知时,我们如何看待根本上未知和不可知的风险? T…

关于 vs2019 c++20 规范里的 STL 库里模板 decay_t<T>

(1) 这个模板,在库代码里非常常见。 decay 英文是“衰弱,消减” 的意思,大概能感觉到就是要简化模板参数 T 的类型,去掉其上的修饰符。因为常用且复杂,故单独列出其源码和注释。先举例其应用场景…

JumpServer堡垒机应用(v3.10.8) 下

目录 JumpServer堡垒机简单式部署与管理(v3.10.8) 上-CSDN博客 一. 资产管理 1.1创建资产 1.2 给资产主机创建用户 1.2.1 普通账户: 1.2.2 特权账户: 1.2.3 创建用户 二. 命令过滤 2.1 创建命令组 2.2 创建命令过滤 ​编辑 三. 创建资产授权 …

《Python编程从入门到实践》day29

# 昨日知识点回顾 修改折线图文字和线条粗细 矫正图形 使用内置格式 # 今日知识点学习 15.2.4 使用scatter()绘制散点图并设置样式 import matplotlib.pyplot as plt import matplotlib matplotlib.use(TkAgg)plt.style.use(seaborn-v0_8) # 使用内置格式 fig, ax plt.subpl…

软考中级-软件设计师 (十一)标准化和软件知识产权基础知识

一、标准化基础知识 1.1标准的分类 根据适用的范围分类: 国际标准指国际化标准组织(ISO)、国际电工委员会(IEC)所制定的标准,以及ISO所收录的其他国际组织制定的标准。 国家标准:中华人民共和…

单位个人如何向期刊投稿发表文章?

在单位担任信息宣传员一职以来,我深感肩上的责任重大。每月的对外信息宣传投稿不仅是工作的核心,更是衡量我们部门成效的重要指标。起初,我满腔热血,以为只要勤勉努力,将精心撰写的稿件投至各大报社、报纸期刊的官方邮箱,就能顺利登上版面,赢得读者的青睐。然而,现实远比理想骨…

Polylang Pro插件下载:多语言网站构建的终极解决方案

在全球化的今天,多语言网站已成为企业拓展国际市场的重要工具。然而,创建和管理一个多语言网站并非易事。幸运的是,Polylang Pro插件的出现,为WordPress用户提供了一个强大的多语言解决方案。本文将深入探讨Polylang Pro插件的功能…

基于物联网的教室人数检测系统-设计说明书

设计摘要: 本设计基于物联网技术,实现了一个教室人数检测系统。系统利用STM32单片机作为中控,通过红外对管检测人员进出教室,并实时统计应到人数和实到人数,同时使用OLED显示屏显示相关信息。系统还通过温湿度传感器检…

用SwitchHosts模拟本地域名解析访问

一.用SwitchHosts模拟本地域名解析访问 1.下载地址 https://download.csdn.net/download/jinhuding/89313168 2.使用截图

每周一算法:恰好经过K条边的最短路

题目描述 牛站 给定一张由 M M M 条边构成的无向图,点的编号为 1 ∼ 1000 1\sim 1000 1∼1000 之间的整数。 求从起点 S S S 到终点 E E E 恰好经过 K K K 条边(可以重复经过)的最短路。 注意: 数据保证一定有解。 输入格式 第 1 …

【动态规划五】回文串问题

目录 leetcode题目 一、回文子串 二、最长回文子串 三、分割回文串 IV 四、分割回文串 II 五、最长回文子序列 六、让字符串成为回文串的最少插入次数 leetcode题目 一、回文子串 647. 回文子串 - 力扣(LeetCode)https://leetcode.cn/problems/…

mysql的explain

explain可以用于select,delete,insert,update的statement。 当explain用于statement时,mysql将会给出其优化器(optimizer)的执行计划。 通过explain字段生成执行计划表。下面来解析这个执行计划表的每一列…

一种请求头引起的跨域问题记录(statusCode = 400/CORS)

问题表象 问题描述 当我们需要在接口的headers中添加一个自定义的变量的时候,前端的处理是直接在拦截器或者是接口配置的地方直接进行写,比如下面的这段比较基础的写法: $http({method: "post",url:constants.backend.SERVER_LOGIN…

Cache基本原理--以TC3xx为例(2)

目录 1.概述 2. Cache映射模式 3.DCache的数据一致性 4.小结 1.概述 上一篇Cache基本原理--以TC3xx为例(1)-CSDN博客,我们聊了Cache基本概念,接下来我们将继续聊Cache映射模式,DCache的数据一致性问题。 2. Cache映射模式 常见的Cache地…

Postman基础功能-前置脚本与接口关联

大家好,今天给大家分享一下关于 Postman 工具中的前置脚本与接口关联的使用,本文中汇大量用到关于变量的知识,前段时间给大家除了一篇文章分享,可以参考: Postman基础功能-变量设置与使用 一、前置脚本 介绍&#xf…

C++笔试强训day23

目录 1.打怪 2.字符串分类 3.城市群数量 1.打怪 链接 模拟题目&#xff0c;按题意进行模拟就行。 #include <iostream> using namespace std; // 简单模拟 int solve() {int h, a, H, A;cin >> h >> a >> H >> A;if (a > H)return -1;int…

bcb6 lib编程

Library 新建 Library 新建Cpp File File1.cpp extern "C" __declspec(dllexport) int add(int a,int b) {return ab;}Build Project->Build Project1 使用 新建项目 Add New Project Unit1.cpp #pragma hdrstop#include "Unit1.h" //---------…

上班族兼职新篇章:10大实战攻略,轻松年赚1-20万

对于众多上班族而言&#xff0c;如何在工作之余赚取额外收入&#xff0c;开启自己的第一份副业&#xff0c;已成为许多人心中的疑问。每个人的才能和兴趣点不尽相同&#xff0c;但都有机会找到适合自己的兼职方式。接下来&#xff0c;就让我们一起探索这10大实战攻略&#xff0…

es 分词器(五)之elasticsearch-analysis-jieba 8.7.0

es 分词器&#xff08;五&#xff09;之elasticsearch-analysis-jieba 8.7.0 今天咱们就来讲一下es jieba 8.7.0 分词器的实现&#xff0c;以及8.x其它版本的实现方式&#xff0c;如果想直接使用es 结巴8.x版本&#xff0c;请直接修改pom文件的elasticsearch.version版本号即可…