请问tidb中如果为 非 聚簇表,并且主键是整型的,那么这个时候还是用主键做rowid?

【 TiDB 使用环境】生产 【 TiDB 版本】tidb 5.1 【遇到的问题】 【复现路径】做过哪些操作出现的问题`
【问题现象及影响】
问一个原理问题,
1、请问tidb中如果为 非 聚簇表,并且主键是整型的,那么这个时候还是用主键做rowid?
2、如果tidb中的表为聚簇表,但是主键是非整型,那么这个时候还是用主键做rowid?

主键是个单独的索引,rowid是系统自动分配
可通过 curl http://{TiDBIP}:10080/mvcc/key/{db}/{table}/rowid查询mvcc信息

非整形主键聚簇表使用主键列作为key的组成部分,没有了rowid
通过curl http://{TiDBIP}:10080/mvcc/key/{db}/{table}?${c1}={v1}&${c2}=${v2} 查询mvcc信息

如果是非聚簇表,不管主键是不是整形都会用内部隐式分配的rowid,主键只是一个唯一索引
如果是聚簇表,不管主键是不是整形都会用主键做rowid(准确来说是key),如果没有主键就会用内部生成的rowid做key

2 个赞

key是tableid+rowid,您说的 ·准确来说是key· 是怎么理解呢?

非聚簇表 主键就是索引 rowid 系统自动生成

准确来说主键是主键,rowid是隐式生成的rowid,两者没有必然联系,他们都是为了生成key和表明表是怎么组织数据的,比如聚簇表有主键,那么会根据主键组织数据,key也是tableid+主键

key 是tableid+pk(聚簇表) 或者tableid+rowid(非聚簇表),这样比较清晰了

可以去看下tidb的官方课程,这些概念性的东西将的挺细的:grin:

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