1.数据库架构
1.1TiKV
- 数据持久化 rocksdb
- 强一致 副本高可用 raft协议
- MVCC 快照读
- 分布式事务
- Coprocessor
1.2 TiDB-server
- 处理客户端连接
- 解析与编译sql
- 关系型数据与kv转化
- 执行sql语句
- 执行online ddl
- 垃圾回收- GC
- 热点小表缓存v6.0
1.3 PD
- TiKV元数据存储
- 分配全局ID、事务ID和TSO
- 收集集群信息进行调度
- 提供TiDB Dashboard 服务
1.4 TiFlash
- 异步复制
- 列存提高分析效率
- 一致性
- OLAP&OLTP 业务隔离
- 智能选择
2.TiDB Server架构
2.1整体介绍
- parse 语法分析 词法分析
- compile 解析编译 AST->验证->逻辑优化->物理优化->执行计划
转化为kv table_id_PK:value
2.2 executor distsql transaction KV读写模块
executor按照执行计划执行sql 包括点查询(走kv模块)和复杂查询 复杂查询经过distsql模块(只对单表操作)后和tikv client(向tikv发送请求)交互
进行事务操作 先向pd请求TSO 再和KV模块交互
2.3 online ddl模块
start job接受到ddl job后 每个tidbserver会将其放到tikv的job queue中 同一时刻 只有一个tidbserver成为owner 可以执行job 执行完后 会将其放在历史队列中
schema load负载载入需要的表信息数据 缓存在tidb中
2.4 GC机制
默认lifetime 10min
2.5 TiDB server 缓存
缓存组成:
- sql结果(多表join、大事务)
- 线程缓存
- 元数据、统计信息
缓存管理: - tidb _mem_quota_query
- oom-action
2.6 热点小表缓存
- 表的数据量不大 64M以下
- 只读表或很少修改的表
- 表的访问很频繁
alter table tablename cache;
tidb_table_cache_lease
租约时间内 只读 无法写入
-
租约到期 数据过期
-
写操作不再阻塞
-
读写直接到tikv上进行 读性能相对下降
-
数据更新完毕 租约继续
-不支持对缓存表做ddl
HTAP场景特点:
- 支持高并发
- 同时支持oltp olap
- 一致性
MPP架构:
- 中间结果保存在内存中
- 不支持非等值join
- 作用于tiflash
- 可以对聚合 join操作加速
与事务相关的模块:kv和transaction
非聚簇表 定义主键 不使用主键作为rowid
3.tikv
3.1tikv持久化
列簇 cf