TiDB--数据持久化


TiDB的功能

  • 处理客户端连接
  • 对SQL进行解析和编译
  • SQL和KV进行转换
  • 执行SQL
  • 执行online ddl
  • GC

1, 处理客户端连接: SQL Protocol层
2, 对SQL进行解析和编译:

        Parse:将SQL转换为AST抽象语法树


        Compile模块:根据传入的AST


                     -> 合法性验证(列、表是否存在) 
                     -> 逻辑语法树(依据关系型等价规则进行逻辑变换)
                     -> 物理优化(根据逻辑优化的结果考虑数据分布和大小,考虑算子,走哪个索引还是全表扫描)
                     生成执行计划
3, SQL和KV进行转换


        KEY:  表编号+主键编号:T24_r1
        Value:  列的组合 col1,col2,col3...
        多个K-V从而构成Region;
        Region默认96MB, 如果达到144MB会进行自动Split;        
4, 执行SQL


        Executor:    按照Compile生成的执行计划开始执行,每一层调用下一层的方法获得结果;
        DistSQL:  将复杂的SQL经过DistSQL转换为对单标的操作的组合,发送给TiKV;

        KV模块:   对于点查的请求的处理;(主键或唯一索引,查询1条或者0条);

       TiKV Client: 主要负责向TiKV集群发送读写请求;
5, 执行online ddl

  Start job:  接收用户发起的DDL语句,将其放到tikv重点job 队列中;

  workers: 执行DDL的组件,每个集群只有一个owner, tidb server owner去job queue中取一个job进行执行;执行结束后将job 放到history queue;  

               每个owner都有时间限制,超过一定时间会重新选举新的tidb owner;谁是owner谁就负责执行job;

 schema load: 当前tidb server称为owner之后会将最新的schema信息同步到内部缓存中,从而执行job queue;

    
6, GC

 

 保存历史版本,可以用户恢复;GC来控制整个集群的历史版本数据进行清理;

一般每10min触发一次GC,GC life time,每次触发会保留safe point(默认10min)到当前时间之间的数据;

TiDB Server缓存的介绍:

1, 缓存促成:

        SQL 结果

        线程缓存

        元数据,统计信息

2, TiDB Server缓存管理

       tidb_mem_quota_query:控制每条sql语句的默认缓存大小;

       oom-action: 如果缓存超过设置的阈值后的行为动作;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值