TIDB库的自增ID

【 TiDB 使用环境】生产环境
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
自增ID,如果手动往库里插入带着ID这种如何防止与自增ID池里面的字段冲突

建表用AUTO_ID_CACHE=1,tidb版本升级到6.5.8或者7.5.1
不会冲突的

2 个赞

AUTO_RANDOM 是应用在 BIGINT 类型列的属性,用于列值的自动分配。其自动分配的值满足随机性唯一性
AUTO_INCREMENT 是用于自动填充缺省列值的列属性。当 INSERT 语句没有指定 AUTO_INCREMENT 列的具体值时,系统会自动地为该列分配一个值。
https://docs.pingcap.com/zh/tidb/stable/auto-increment
https://docs.pingcap.com/zh/tidb/stable/auto-random

自增的就不建议再手工指定值插入了,你都自增了,为啥要手工插入?

1 个赞

姿势不对啊,要不自增id,要不程序分发id

手工插防止不了

1 个赞

自己组合一个特有的前缀+中缀+后缀,防止重复

感觉应该是防止不了

不推荐混合用啊

使用自增主键的添加数据,遇到主键冲突的时候,捕获错误,然后重新插入一遍,直至成功。

我觉得你一定要手工和自增混用的话,最好的方案,应该是考虑一下使用序列。

https://docs.pingcap.com/zh/tidb/stable/sql-statement-create-sequence

另外表就只能用非聚簇表+shard_row_id_bits改造一下了,不然肯定有热点。

tidb序列性能很差

1 个赞

为什么要手动插入

先修改下自增ID的值,跳过你要插入的哪些; AUTO_INCREMENT=value

一直有个问题,为什么大部分应用喜欢使用自增ID。这个具体在哪方面有很大的性能提升嘛,一直搞不懂

1 个赞

不要用自带的tidb自增,因为好多自增id在业务中是有用途,但自增id不是随时间而增大的,最好的处理方法是开发去生成自增id

雪花算法 生成自增ID吧。

还是用自增ID吧

为啥要手工指定ID插入, 目的是?

tidb的统一自增效果还是可以的,性能影响也不大,最好是新版本用
表配个AUTO_ID_CACHE=1参数就行