TiDB
TiDb内核实现原理
TiDB cluster
-
TikV
-
最小分片Region
-
通过Raft协议处理数据副本(副本Region)的写入RocksDB
-
拖个Tikv存在于TiKV Map 中
-
-
RocksDB
- 执行磁盘写入(写入Tikv)
-
TiFlash
-
通过KA API 查询TikV
PD cluster(Placement Driver)
TSO/Data location
SQL layer Cluster
- DistSQL
通过TSO,TIDB cluster调用PD 定位数据
核心组件
TiDB cluster
TikV server
PD cluster
TiFlash
实时数据解决方案
弹性Real Time Htap
- 行与列的混合模式
特性
闪回表
-
FlashBack Table
-
在垃圾回收生命周期窗口之内还原被丢弃的表和数据
全局临时表
- 仅在当前事务中全局可见
缓存表
-
提升查询性能的有效手段
-
缓存表是将表的内容完全缓存到TiDB server内存里
-
读取很频繁
-
缓存控制:Alter table table_name CACHE | NOCACHE
分区表
-
Range 分区剪裁
-
Hash 用于大规模写入的情况下将数据打散,平均分配到各个分区
DML不会阻塞其他回话DDL
不支持外键,但支持外键语法
Placement Policy
-
跨地域数据库Region放置规则
-
用户可以将表指定部署至不同的地域,主机
-
支持应用跨地域部署
-
保证本地的数据副本可用于本地的Stale read读取
-
-
创建.toml文件,为TikV server打标签
stale read
- 函数TIDB_BOUNDED_STALENESS:在时间范围内尽可能的读取最新数据
AUTO_INCREMENT
-
用于自动填充默认字段值属性(主键ID)
-
处于性能考虑,AUTO_INCREMENT编号会以批量的形式分配给每个TIiDB server实例
-
缓存大小通过AUT_ID_CACHE表选项控制
-
Last_INSERT_ID()可以获得上次插入操作时使用的值
-
AUTO_RANDOM
-
用于自动随机填充默认列值,解决热点问题
-
仅支持BIGINT数据类型
-
它是一个基于分片的随机生成器
-
LAST_INSERT_ID():与AUTO_INCREMENT的情况类似,它检索上次插入操作所使用的值
-
_tidb_rowid
-
隐式字段
- 使用SHARD_ROW_ID_BITS,设置隐式字段_tidb_rowid