TiDB数据库架构——TiDB Server
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相关推荐
- TiDB数据库架构概述
目录 TiDB体系架构 TiDB Server TiKV(行存) PD (Placement Driver) TiFlash(列存) 例题 TiDB体系架构 TiDB Server TiDB Serv ...
- TiDB PCTP(PingCAP 认证 TiDB 数据库专家) 认证考试高分攻略
TiDB PCTP(PingCAP 认证 TiDB 数据库专家) 认证考试高分攻略 战果 利用下班时间学习了大概2周后,参加2022年3月23号的PCTP认证考试,63分通过(总分70分,通过线42分 ...
- 猿创征文|一文带你了解国产TiDB数据库
写在前面 很多小伙伴在日常接触中接触国产数据库很少,大部分在开发应用上使用的是由甲骨文,微软等公司提供了MySQL,SQLserver.普通程序员很少能用到newSQl数据库,TiDB就是一种newS ...
- PCTP考试学习笔记之一:深入TIDB体系架构(上)
作者: OnTheRoad 原文来源: https://tidb.net/blog/f52b44cf 本系列学习笔记根据官方课程<TiDB 高级系统管理 [TiDB v5]>整理,感谢官方 ...
- TIDB数据库特性总结
文章目录 前言 一.TIDB数据库介绍 1.1数据管理技术发展阶段 1.2 数据库分类 1.2 如何学习TiDB 二.TIDB特点和使用场景 2.1.MySQL存在问题 2.2.TiDB数据库特点 2 ...
- TIDB简介及TIDB部署、原理和使用介绍
TiDB简介及TiDB部署.原理和使用介绍 从MySQL架构到TiDB 数据库分类 介绍TiDB数据库之前,先引入使用场景.如今的数据库种类繁多,RDBMS(关系型数据库).NoSQL(Not O ...
- 微众银行数据库架构演进及 TiDB 实践经验
作者介绍: 胡盼盼,微众银行数据平台室室经理.硕士毕业于华中科技大学,毕业后加入腾讯,任高级工程师,从事分布式存储与云数据库相关的研发与运营工作:2014 年加入微众银行,负责微众银行的数据库平台的建 ...
- 开源 TiDB Operator 让 TiDB 成为真正的 Cloud-Native 数据库
TiDB Operator 是 TiDB 在 Kubernetes 平台上的自动化部署运维工具,借助 TiDB Operator,TiDB 可以无缝运行在公有云厂商提供的 Kubernetes 平台上 ...
- tidb 架构~tidb 理论学习(1)
一 简介:介绍新型NEW SQL数据库tidb 二 目的: tidb出现的目的,就是代替mysql+中间件,实现横向水平扩展 三 核心理论观点 1 MySQL 是单机数据库,只能通过 XA 来满足跨数 ...
最新文章
- ASP.NET MVC (三、表单与文件上传)
- SQL LIKE 通配符随笔
- leetcode343. 整数拆分(思路+详解)
- Linux 启动顺序
- spring事务传播,隔离级别,
- iOS常用的第三方类库
- elementui带输入建议查询_知道Profiler是什么吗?带你了解SQL Server的性能优化工具...
- foobar2000 解决dts播放出现粉色噪音及cd文件名乱码
- JS实现四舍五入保留两位小数
- 钉钉企业微信与飞书模式区别
- Android仿QQ列表滑动
- 阿里云大数据ACP认证学习笔记
- css 文本三行显示,超出省略号表示
- 深度学习在美团配送ETA预估中的探索与实践-笔记
- app 服务器维护通知,启用 App Store 服务器通知
- OpenCV相关操作(cv2) (python)
- SQL修改表字段名称及结构
- 网上下的--ARM入门笔记
- 电子产品为什么一定要3C认证?
- 区块链革命 - 第2篇 转型 - 第4章 重新设计公司架构:核心与边缘
热门文章
- 数据挖掘与机器学习:Apripori算法
- C++求圆的周长和面积
- mysql横切纵切_《圆柱横切及纵切-切》.ppt
- Matplotlib基础绘图函数实例:饼图,直方图,极坐标图,散点图
- 【交换篇】01. 配置线连接登录 ❀ C3750-E ❀ CISCO 交换机
- 计算机软件基础第二版p,《计算机软件基础(二)》
- airflow系列教程(二)Apache airflow完整安装流程
- mysql数据库 mdf 文件_如何连接到MDF数据库文件?
- 精通Web Analytics 2.0 (4) 第二章:选择你的网络分析灵魂伴侣的最佳策略
- 【学习心得】Selenium3自动化测试实战——基于Python(虫师)