tidb shard_row_id_bits 相关问题

观看tidb 的课程,课程里面的老师讲,如果讲shard_row_id_bits 设置为4,那么row_id 设置一个64位的值,前4位是随机,后60位是按照id往后排,会去插入不同的region
但是根据我自己的实验,发现生成的rowid并没有64位,只有20位,这是怎么回事呢?请各位老师执教

理解有点误区,tidb_rowid 是隐藏列,实际上 非聚簇索引主键,才会有这个64位的值


https://docs.pingcap.com/zh/tidb/stable/troubleshoot-hot-spot-issues#使用-shard_row_id_bits-处理热点表

参考文档中的描述:


https://docs.pingcap.com/zh/tidb/stable/clustered-indexes


另外对于 这种主键定义,最好使用 BIGINT

CREATE TABLE t (a BIGINT PRIMARY KEY /*T![clustered_index] CLUSTERED */, b VARCHAR(255));
CREATE TABLE t (a BIGINT PRIMARY KEY /*T![clustered_index] NONCLUSTERED */, b VARCHAR(255));

64比特位,不是64位长度的十进制数值,ROWID是int64类型

该主题在最后一个回复创建后60天后自动关闭。不再允许新的回复。