这段时间学习了TIDB,现抽空整理了一下。
TiDB整体架构
TiDB 主要分三部分: TiDB Servers(SQL 层)、PD servers、TiKV Cluster(即存储引擎层)
TiDB 存储的数据包括三部分:表的元数据,表的row,索引数据。对于 Index,TiDB 不止需要支持 Primary Index,还需要支持 Secondary Index。TiDB 对每个表分配一个 TableID,每一个索引都会分配一个 IndexID,每一行分配一个 RowID(如果表有整数型的 Primary Key,那么会用 Primary Key 的值当做 RowID),其中 TableID 在整个集群内唯一,IndexID/RowID 在表内唯一,这些 ID 都是 int64 类型。
元数据按照如下规则进行编码成 Key-Value pair:
Key: tablePrefix{tableID}_recordPrefixSep{rowID}
Value: [col1, col2...]
unique index key-value pair:
Key: tablePrefix{tableID}_indexPrefixSep{indexID}_indexedColumnsValue
Value: rowID
非 unique index key-value p