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官方资料

相关推荐

  1. kind+<span style='color:red;'>tidb</span>

    kind+tidb

    2024-05-16 10:06:28      31 阅读
  2. TiDB-PCTP考试复习

    2024-05-16 10:06:28       32 阅读
  3. TiDB Distributed NewSQL Database

    2024-05-16 10:06:28       36 阅读
  4. TiDB热点问题

    2024-05-16 10:06:28       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-16 10:06:28       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-16 10:06:28       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-16 10:06:28       87 阅读
  4. Python语言-面向对象

    2024-05-16 10:06:28       96 阅读

热门阅读

  1. 深视 线扫相机 获取点云数据

    2024-05-16 10:06:28       36 阅读
  2. 在Python中,f代表着格式化字符串

    2024-05-16 10:06:28       35 阅读
  3. MySQL--增、删、改、查,

    2024-05-16 10:06:28       31 阅读
  4. How to Calibrate a Camera with OpenCV?

    2024-05-16 10:06:28       26 阅读
  5. C# WinForm —— 20 RichTextBox 介绍

    2024-05-16 10:06:28       37 阅读
  6. C++ QT设计模式总结

    2024-05-16 10:06:28       35 阅读
  7. 初级银行从业资格证知识点(十二)

    2024-05-16 10:06:28       30 阅读
  8. 定向传递函数(DTF)算法

    2024-05-16 10:06:28       35 阅读
  9. Golang中HTTP包的内存泄漏

    2024-05-16 10:06:28       30 阅读
  10. Spring Batch 是什么?主要用于什么场景?

    2024-05-16 10:06:28       31 阅读