TiDB Server架构

TiDB Server 是SQL层,无状态,启动多个TiDBServer,均匀分摊,解析SQL,获取真实数据。

Protocol Layer、:负责客户端的连接。

Parse、Compile:负责SQL语句的解析和编译,生成SQL语句的执行计划。交给下面的Executor

Transaction、KV:负责事务的处理,

PD Client、TiKVClient:负责连接

schema load、worker、start job:负责online DDL语句的执行,建表,建索引

memBuffer:缓冲区,比如登入信息

cache table:实现热点小表缓存,提高表的吞吐量

TiDB Server 主要功能

  • 处理客户端的连接
  • SQL语句的解析和编译
  • SQL语句的解析和编译
  • 关系型数据与KV的转化
  • SQL语句的执行
  • Online DDL 的执行
  • 垃圾回收
  • 热点小表缓存V6.0

SQL语句的解析和编译

生成AST语法树传递给Compiler模块,树形结构,进行编译和优化

物理优化:走索引还是全表扫描,通过统计信息,进行一个优化

KV的转化

聚簇表

KEY:表号+主键

VALUE:数据

非聚簇表:使用主键作为KEY

一个region,默认96MB,超过144MB,会进行分裂操作。
如果没有定义主键,key 中包含 RowID,Index ID 和 Table ID,都是 int64 类型

SQL读写相关模块

DistSQL:为了减少耦合度过高的问题。复杂SQL经过DistSQL都会变成单表的SQL语句,然后发送到TiKV。

KV:只查一行或者0行,点查,走KV模块,复杂SQL走DistSQL

TiKV Client:通过这个将解析之后的SQL发送给TiKV

PD Client:发送TSO

在线DDL相关模块

同一时刻只能有一个TIDBServer进行操作

DDL语句由start job接收,放入 TiKV job队列当中,所有的start job都可以接收,都放入队列当中,只有一个worker进行操作叫做owner,执行完就放入历史队列当中。在一段时间内是owner,过了这段时间可能会重新发起选举。这一做法可以防止宕机,一个TiDBServer宕机之后,别的TiDBServer可以继续执行DDL语句。

GC 机制与相关模块

GC life time:在所有TiDBServer当中会选举一个GC leader,在一个时间段的历史数据会进行保留,不在在时间段之内的数据就让GC回收。默认十分钟。

TiDB Server的缓存

TiDB Server缓存组成

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

TiDB Server 换粗管理(两个参数)

  • tidb_mem_qutota_query 每条SQL占用缓存的大小
  • oom-action 超过大小,返回错误或者记录日志

结果散落在多个节点,将数据放入缓存中,将各个节点的数据回合起来。

热点小表缓存

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

要解决数据不一致的问题。

加入缓存指令:

ALTER TABLE users CACHE;

放缓存内的表的大小只能小于64MB

**租约:tidb_table_cache_lease=5,**在租约之内,其他TiDBServer不能够写入,阻塞写,不会阻塞读,必须在租约结束。租约之外写是直接写在TiKV之内的,读取在TiKV之内读取,速度大打折扣。在租约之内TiKV会重新载入最新的数据,refresh

应用

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

TiDB数据库架构——TiDB Server相关推荐

  1. TiDB数据库架构概述

    目录 TiDB体系架构 TiDB Server TiKV(行存) PD (Placement Driver) TiFlash(列存) 例题 TiDB体系架构 TiDB Server TiDB Serv ...

  2. TiDB PCTP(PingCAP 认证 TiDB 数据库专家) 认证考试高分攻略

    TiDB PCTP(PingCAP 认证 TiDB 数据库专家) 认证考试高分攻略 战果 利用下班时间学习了大概2周后,参加2022年3月23号的PCTP认证考试,63分通过(总分70分,通过线42分 ...

  3. 猿创征文|一文带你了解国产TiDB数据库

    写在前面 很多小伙伴在日常接触中接触国产数据库很少,大部分在开发应用上使用的是由甲骨文,微软等公司提供了MySQL,SQLserver.普通程序员很少能用到newSQl数据库,TiDB就是一种newS ...

  4. PCTP考试学习笔记之一:深入TIDB体系架构(上)

    作者: OnTheRoad 原文来源: https://tidb.net/blog/f52b44cf 本系列学习笔记根据官方课程<TiDB 高级系统管理 [TiDB v5]>整理,感谢官方 ...

  5. TIDB数据库特性总结

    文章目录 前言 一.TIDB数据库介绍 1.1数据管理技术发展阶段 1.2 数据库分类 1.2 如何学习TiDB 二.TIDB特点和使用场景 2.1.MySQL存在问题 2.2.TiDB数据库特点 2 ...

  6. TIDB简介及TIDB部署、原理和使用介绍

    TiDB简介及TiDB部署.原理和使用介绍 从MySQL架构到TiDB 数据库分类 ​ 介绍TiDB数据库之前,先引入使用场景.如今的数据库种类繁多,RDBMS(关系型数据库).NoSQL(Not O ...

  7. 微众银行数据库架构演进及 TiDB 实践经验

    作者介绍: 胡盼盼,微众银行数据平台室室经理.硕士毕业于华中科技大学,毕业后加入腾讯,任高级工程师,从事分布式存储与云数据库相关的研发与运营工作:2014 年加入微众银行,负责微众银行的数据库平台的建 ...

  8. 开源 TiDB Operator 让 TiDB 成为真正的 Cloud-Native 数据库

    TiDB Operator 是 TiDB 在 Kubernetes 平台上的自动化部署运维工具,借助 TiDB Operator,TiDB 可以无缝运行在公有云厂商提供的 Kubernetes 平台上 ...

  9. tidb 架构~tidb 理论学习(1)

    一 简介:介绍新型NEW SQL数据库tidb 二 目的: tidb出现的目的,就是代替mysql+中间件,实现横向水平扩展 三 核心理论观点 1 MySQL 是单机数据库,只能通过 XA 来满足跨数 ...

最新文章

  1. ASP.NET MVC (三、表单与文件上传)
  2. SQL LIKE 通配符随笔
  3. leetcode343. 整数拆分(思路+详解)
  4. Linux 启动顺序
  5. spring事务传播,隔离级别,
  6. iOS常用的第三方类库
  7. elementui带输入建议查询_知道Profiler是什么吗?带你了解SQL Server的性能优化工具...
  8. foobar2000 解决dts播放出现粉色噪音及cd文件名乱码
  9. JS实现四舍五入保留两位小数
  10. 钉钉企业微信与飞书模式区别
  11. Android仿QQ列表滑动
  12. 阿里云大数据ACP认证学习笔记
  13. css 文本三行显示,超出省略号表示
  14. 深度学习在美团配送ETA预估中的探索与实践-笔记
  15. app 服务器维护通知,启用 App Store 服务器通知
  16. OpenCV相关操作(cv2) (python)
  17. SQL修改表字段名称及结构
  18. 网上下的--ARM入门笔记
  19. 电子产品为什么一定要3C认证?
  20. 区块链革命 - 第2篇 转型 - 第4章 重新设计公司架构:核心与边缘

热门文章

  1. 数据挖掘与机器学习:Apripori算法
  2. C++求圆的周长和面积
  3. mysql横切纵切_《圆柱横切及纵切-切》.ppt
  4. Matplotlib基础绘图函数实例:饼图,直方图,极坐标图,散点图
  5. 【交换篇】01. 配置线连接登录 ❀ C3750-E ❀ CISCO 交换机
  6. 计算机软件基础第二版p,《计算机软件基础(二)》
  7. airflow系列教程(二)Apache airflow完整安装流程
  8. mysql数据库 mdf 文件_如何连接到MDF数据库文件?
  9. 精通Web Analytics 2.0 (4) 第二章:选择你的网络分析灵魂伴侣的最佳策略
  10. 【学习心得】Selenium3自动化测试实战——基于Python(虫师)