TiDB进阶篇-TiDB Server架构

简介

较深入的介绍TiDB Server。

TiDB Server 架构

TiDB进阶篇-TiDB Server架构_第1张图片

图解

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

TiDB进阶篇-TiDB Server架构_第2张图片

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

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

TiDB进阶篇-TiDB Server架构_第3张图片

4.事务相关。

TiDB进阶篇-TiDB Server架构_第4张图片

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

TiDB进阶篇-TiDB Server架构_第5张图片

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

TiDB进阶篇-TiDB Server架构_第6张图片

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

主要功能

TiDB进阶篇-TiDB Server架构_第7张图片

SQL语句的解析和编译

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

TiDB进阶篇-TiDB Server架构_第8张图片

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

TiDB进阶篇-TiDB Server架构_第9张图片

关系表装换KV存储

 1.下图是一张聚簇表,由于编号为1的可能很多表都有,所以前面加了一个表的编号确定唯一性。TiDB进阶篇-TiDB Server架构_第10张图片

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

TiDB进阶篇-TiDB Server架构_第11张图片

SQL读写相关模块 

TiDB进阶篇-TiDB Server架构_第12张图片 

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

在线DDL相关模块

TiDB进阶篇-TiDB Server架构_第13张图片 

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

GC机制与相关模块

TiDB进阶篇-TiDB Server架构_第14张图片 

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

TiDB Server的缓存

TiDB进阶篇-TiDB Server架构_第15张图片

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

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

tidb_mem_quota_query(查询使用的缓存)

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

热点小表缓存

TiDB进阶篇-TiDB Server架构_第16张图片

热点小表缓存原理 

TiDB进阶篇-TiDB Server架构_第17张图片

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

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

TiDB进阶篇-TiDB Server架构_第18张图片

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

TiDB进阶篇-TiDB Server架构_第19张图片 

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

注意事项 

TiDB进阶篇-TiDB Server架构_第20张图片

 

你可能感兴趣的:(Tidb入门到小工,tidb,数据库)