五大核心特征
- 水平扩缩容
- 高可用,分布式事务支持
- HTAP(OLTP+OLAP)
- 分布式
- 兼容MySQL5.7协议
竞品:MySql差异化
- TiDB纯国产化技术,尤其适用于政府项目
- 数据量上来之后的解决方案之一,优于古老的分库分表技术,但是替换底层数据库是个需要慎重考虑的决策
整体架构
四大模块
TiDB Server:SQL层
负责:接受客户端连接,执行SQL解析优化
特点:本身并不存储数据,只是解析SQL,将实际的请求转发给底层存储节点TiKV或者TiFlash
PD Server:集群的大脑
负责:集群元信息管理,为分布式事务分配事务ID
特点:TiDB集群的元信息管理模块
TiKV Server:数据存储
负责:存储Key-Value数据
TiFlash Server:数据存储
负责:存储列式数据
FAQ
分布式主键id如何分配?
TiDB 实现 AUTO_INCREMENT 隐式分配的原理是:
对于每一个自增列,都使用一个全局可见的键值对用于记录当前已分配的最大 ID。
由于分布式环境下的节点通信存在一定开销,为了避免写请求放大的问题,每个 TiDB 节点在分配 ID 时,都申请一段 ID 作为缓存,用完之后再去取下一段,而不是每次分配都向存储节点申请。
唯一性保证:
在集群中有多个 TiDB 实例时,如果表结构中有自增 ID,建议不要混用显式插入和隐式分配
(即自增列的缺省值和自定义值),否则可能会破坏隐式分配值的唯一性。