TiDB进阶篇-TiDB Server架构

简介

较深入的介绍TiDB Server。

TiDB Server 架构

图解

1.下面是负责SQL语句的解析和优化。

2.下面试负责TiKV存储多版本,过期版本的清理作用。

3.复杂SQL的拆分(如果是点查那么就不需要经过DistSQL)。

4.事务相关。

5.负责PD和TiKV的通信功能。

6.负责Online DDL。(保证不会阻塞线上的读写操作)

7.一些认证信息的缓存,和数据的缓存(cache table 是缓存小表的作用)。

主要功能

SQL语句的解析和编译

1.下图是生成AST语法树的过程。

2.解析SQL的正确性,下面的物理优化,会根据表的统计信息,来决定是走全表扫描还是走索引查询,下面的元数据缓存是从PD查询过来的缓存,包括数据的位置等等信息

关系表装换KV存储

 1.下图是一张聚簇表,由于编号为1的可能很多表都有,所以前面加了一个表的编号确定唯一性。

2.region的切分(默认一个region是96M,如果之前的region有修改的操作96M变成144M的时候会在进行切分)。 

SQL读写相关模块 

 

  • 如果是简单的查询,那么就是走KV模块。
  • 如果是复杂的查询,那么就是走DisSQL模块。
  • 如果有事务相关,那么就是走Transaction模块。 

在线DDL相关模块

 

客户端提交DDL请求给start job,然后TiDB Server之前会选择出一个owner来执行TiKV的job。从而执行在线的DDL操作。

GC机制与相关模块

 

 在TiKV里面保存的数据有多个版本的情况,这个时候我们不太需要执行的版本的时候,TiDB Server就会启动GC的机制,清楚不需要的历史版本。它保存的时间点有一个safe point。

TiDB Server的缓存

SQL结果的缓存是一些多表的join操作,对于缓存的使用量就比较大。

还有相关事务的操作,所有相关事务的操作都会放在缓存中。

tidb_mem_quota_query(查询使用的缓存)

oom-action(当缓存操作tidb_mem_quota_query以后会有什么执行操作)

热点小表缓存

热点小表缓存原理 

满足小表缓存的前提是表的大小在64M之内。

tidb_table_cache_lease=5;表示这个5秒的时间内可以在缓存中读取缓存的表,没有必要在向TiKV查找数据,在5秒内,所有用户不能够修改TiKV的数据,这要保证缓存和TiKV的实际数据是数据一致的。

5秒以后,可以进行修改操作在TiKV里面,后面的读操作也是在TiKV里面。

 

修改完数据以后,TiKV的数据会重新的写到小表缓存中。 

注意事项 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

工作变成艺术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值