tidb 6.5.5 主键自增基本都是奇数

【 TiDB 使用环境】生产环境
【 TiDB 版本】
V6.5.5
【复现路径】
从5.4.3升级到6.5.5
【遇到的问题:问题现象及影响】

自增主键基本都是奇数




测试了一下,跟NONCLUSTERED 有关系,5.4.3没有这个问题,这个怎么处理

【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

AUTO_ID_CACHE=1
改成1试试,tidb到高版本可以全局递增了,也不太影响性能。

这个不能在线改吧,是空表才行吧

现在的现象是NONCLUSTERED的隐藏列_tidb_rowid自增和ID的自增用的是一个自增序列

应该是自增步长的问题,你执行如下sql语句试试ALTER TABLE table_name AUTO_INCREMENT_INCREMENT = 1;不过这个应该是session级别的,如果想全局的,最好该配置文件,并重启


和步长没关系

你看数据规律,id 和隐藏列_tidb_rowid 用的是一个自增序列,所以奇数都在id,偶数都是在_tidb_rowid

嗯嗯,步长是1,只不过默认被分配给隐藏id和你自己设置的id了。不过尽量还是不要设置为自增,容易有热点问题


代码没动,5.4.3 没这个问题,和官方描述不一致,是不是6.5.5的BUG

文档是聚簇表,你是非聚簇表,不一样的,聚簇表主键没有_tidb_rowid

现在讨论非聚簇表的问题

按文档说的,公用一个分配器,那插入一行数据会自增2个连续的数,一个给了自增列,一个给了_tidb_rowid

是的,所以ID总是奇数

应该也不算bug吧,只是不同版本时同一个分配器在分配自增数据时做了区分,一个是一条数据产生的两个值都给了自增列,一个是自增列和rowid各一个。其实没必要太纠结这个,设计主键时尽量不要使用递增

不是bug

你应该有两个tidb 你连了其中一个的原因

那这样应该是正常的吧。两个共用了一个分配器。

把AUTO_INCREMENT_OFFSET调大一些试试

用聚簇表一劳永逸

自增步长设置的问题