TiDB PCTA认证备考笔记-02-TiDB Server

TiDB Server

1.TiDB Server架构

在这里插入图片描述
Protocol Layer:负责处理客户端的连接
Parse和compile:负责解析和编译,生成执行计划
Executor:负责生成执行计划
DistSQL:范围扫描,全表扫描,索引等由他负责
KV:点查,根据主键唯一索引等由他负责
Transaction和KV:负责处理事务

2.TiDB主要功能

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

3.SQL语句的解析和编译

在这里插入图片描述
在这里插入图片描述

4.关系型数据与KV的转化

当设置一列为主键时,可将其主键当成Key来进行标识,其他的列的值则为Value。但是以主键列作为Key时,有可能其他表中也会有相同的Key,此时则需要通过原有主键Key基础上加上一个表编号作为唯一Key。
这每个键值对的集合,就构成了一个Region,当Region的大小达到144MB时,则会分成2个Region,分别存放在多个TiKV中。

5.SQL语句的执行

  • SQL读写模块
    Execute在收到执行计划后,会将复杂的Select查询,分解成一个一个的单表查询(在DistSQL中),然后再进行组合,最后再交由TiKV进行处理(这里单指复杂SQL)
    Execute在收到执行计划后,如果是简单SQL(索引,主键,点查类),会直接由KV模块处理(简单获取单行的请求)
    上面这两种最后都会与TiKV Client交互,发给TiKV集群
    类似于Transaction事务这种,都会交给Transaction模块,完成两段式的锁提交
    在Transaction模块启动时,必定是一个事务,这就必定会需要一个事务开始时间和事务结束时间,这个时间就需要与PD Client与PD进行交互

6.Online DDL的执行

  • 在线DDL模块(DDL操作不会阻塞读写)
    用户发出DDL语句后,有Start Job模块接收,在接收并发送到TiKV中的JOB队列中,同时,在所有TiDB Server中,有一个Owner可以执行DDL语句,按照Job队列中的顺序依次执行,这个由Workers模块执行(每个TiDB都有,不过只有在Owner时会执行)。在执行完后,会将Job队列中的DDL Job放到TiKV模块中的History Queue中。
    关于Owner这个角色,会有一个任期时间,超过这个时间,会重新进行选举,在激活Owner角色后,Schema Load模块会启动,更新最新的Schema信息,存放在其中(放在TiKV中是因为需要持久化,TiDB执行掉线也不会丢失DDL操作)

7.垃圾回收(GC)

在修改数据后,TiKV不会删掉原有数据,而是会将其标识为历史版本,实现了MVCC。但是这样的话会造成多个版本存在其中,造成版本过多,此时就需要对其进行回收。
GC会有一个Safe Point来保障几点之前的数据进行回收(GC life time默认10分钟)

8.热点小表缓存

  • TiDB Server缓存的构成

    • SQL结果:复杂查询无法从一个TiKV获取所有结果,所以多个TiKV的数据会先存在缓存中
      线程缓存
    • 元数据,统计信息(认证信息,用户名密码也存放在其中)
  • TiDB Server缓存管理

    • tidb_mem_quota_query:每个查询限制内存
    • oom-action:超过上面内存值之后反应
  • 应用场景

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

开启小表缓存

tidb_table_cache_lease=5(5秒内都可以从内存中读取缓存)

这也是一个租约,租约期间内的修改将发生阻塞
租约到期,数据过期,写操作将不被阻塞,但是读写需要到TiKV中执行,在数据更新完毕后,租约继续开启,同时阻塞写。

  • 热点小表总结:
    • TiDB对于每张缓存表的大小限制为64MB
    • 适用于查询频繁,数据量不大,极少修改的场景
    • 在租约(tidb_table_cache_lease)时间内,写操作会被阻塞
    • 租约到期后,读性能会下降
    • 不支持对缓存表的直接DDL操作,需要先关闭
    • 对于表加载慢或者极少修改的表,可以适当延长时间,保持读性能稳定
  • 10
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值