tidb中insert一条记录要选择哪个region进行插入?

如题:假如一张表有很多region,那么此时插入一条数据,它要选择哪个region进行插入,如果表上有索引,那么同样索引的记录要选择哪个region进行插入?

是根据唯一键来查找到对应的region么?

我的理解,他是根据你的key来决定的。如果你的主键是自增的,那基本就是最新的那个region拉。随机的那就要看转换后的key在哪个region拉。

region 是根据key范围划分的逻辑空间,范围是一个左开右闭的区间,region大小有限制超过最大大小会分裂,数据太小也会合并,造成region的key范围变化,key格式如下:

表每行数据按照如下规则编码成 (Key, Value) 键值对:
Key: tablePrefix{TableID}_recordPrefixSep{RowID}
如t1_r1
Value: [col1, col2, col3, col4]
对于主键和唯一索引,需要根据键值快速定位到对应的 RowID,因此,按照如下规则编码成 (Key, Value) 键值对:
Key: tablePrefix{tableID}_indexPrefixSep{indexID}_indexedColumnsValue 如:t1_i1_key
Value: RowID
普通二级索引,一个键值可能对应多行,需要根据键值范围查询对应的 RowID:
Key: tablePrefix{TableID}_indexPrefixSep{IndexID}indexedColumnsValue{RowID}
如:t1_i1_key_rowid
Value: null

多谢多谢

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。