PD
- PD的架构与功能
- TSO的分配
- PD的调度原理
- label的作用
PD的架构
PD的个数一般是奇数个的。
PD的主要功能:
- 整个集群TiKV的元数据存储
- 分配全局ID和事务ID
- 生成全局时间戳TSO
- 收集群信息进行调度
- 提供label,支持高可用
- 提供TiDB Dashboard
路由功能
用key读数据的时候,去PD找在哪一个region。为了避免每次找,将结果缓存在TiKV Client的Region Cache的当中。
backoff:如果leader变了,Region Cache就要重新载入。
TSO分配
TSO:int64的一个整型数,1ms分成262144个TSO
分配过程:
PD Client有一个批处理的功能,将一段时间内的一并发送。
时间窗口:解决性能的问题的方法,讲一段时间的TSO放入缓存,让TiDB Server排队选用。
高可用:会有一段TSO断层,
调度
靠心跳返回的信息,进行信息收集。均衡Region,存储均衡,读写均衡。
Label与高可用
多数的region掉了就不可用了。不同的region分布对可用性是有影响的。
Label的配置:PD,TIKV配置
zone:哪个DC上
隔离级别:副本的分布
TiDB数据库SQL执行流程
DML语句流程概要
DDL语句流程概要
除了加索引,都放入:job queue,加索引放入:add index queue
哪个是owner,哪个执行DDL执行job
SQL的Prase 与 Compile
读取的执行
KV是点查,复杂的查询通过DistSQl转化成简单SQL对单表的查询。
snap shot:特定时间点的一个结构。
可以进行并行查询。
root task:由TiDBServer来执行
cop task:由TiKV的Coprocessor来执行
写入的执行
先将数据读入到memBuffer。
DDL的执行
DDL语句不是并行的,owner会定期的去执行job queue的job,执行完会放入history queue。owner是轮询,由PD控制。