数据库自增 id 不连续会有什么问题吗?

2022-12-06 14:52:57 +08:00
 Lexgni
比如说事务回滚,硬删除等操作,造成的主键字段不连续会有什么影响吗?
3609 次点击
所在节点    程序员
28 条回复
git00ll
2022-12-06 14:59:11 +08:00
没啥问题
wangxin3
2022-12-06 15:01:52 +08:00
啥事没有
brader
2022-12-06 15:03:58 +08:00
看你业务,你业务不依赖它的连续性来做逻辑,就没问题
poorcai
2022-12-06 15:08:33 +08:00
没啥问题吧,而且数据库自增速度好像还挺快的,就是如果你在新增实体时,后面又需要用到这个实体的 id ,就得先保存再使用了
Suomea
2022-12-06 15:27:47 +08:00
Datax 数据同步的时候是按照 id 切分任务的,不连续的话可能会导致切分不均匀,不能充分发挥多线程的优势加快数据同步。
cloverzrg2
2022-12-06 15:31:47 +08:00
From ChatGPT:
如果数据库中的自增 id 不连续,可能会导致一些问题。首先,不连续的 id 可能会导致数据库中的数据无法按照预期的顺序进行排序。此外,不连续的 id 还可能会导致数据库查询操作变得更加复杂,因为在进行查询时需要考虑 id 的跳跃情况。最后,如果数据库中的 id 不连续,还可能会导致数据库中的数据缺失,因为在某些情况下可能会插入重复的 id ,从而覆盖原有的数据。总之,如果数据库中的自增 id 不连续,可能会导致一些计算和统计操作变得更加困难,并且可能会影响数据的完整性和准确性。
jetyang
2022-12-06 15:35:48 +08:00
如果业务需要删除一些记录,那不就不连续了吗?挺常见的操作,没啥问题
xyjincan
2022-12-06 15:45:07 +08:00
pg 并行插入主键,好像返回的就是不连续的
IvanLi127
2022-12-06 16:00:00 +08:00
直觉告诉我没啥问题,性能应该也没啥影响。
victorc
2022-12-06 16:11:03 +08:00
不连续无所谓,对于聚集索引,保持主键递增就行,不影响性能,auto_increment_increment 这个自增步长还可以配置成>1 的数

中间因为删除出现个别空洞也没有关系
wliansheng
2022-12-06 16:12:33 +08:00
重要的是自增,连续不重要
uSy62nMkdH
2022-12-06 16:38:20 +08:00
可能会导致某些查询结果数据不均匀
edis0n0
2022-12-06 18:48:58 +08:00
我们商城订单号就是不连续自增的,每次增量不等概率随机 1~1000 (越小概率越高),主要是为了避免被推出实际订单量范围
jiangwei2222
2022-12-07 08:30:39 +08:00
没啥问题,为了避免分库主键重复,基本上都会把主键自增布长设置成 2 以上
xingjue
2022-12-07 09:17:32 +08:00
递增就可以
jiayouzl
2022-12-07 10:27:55 +08:00
当然没啥问题啊,比如我数据库某个表是自增 ID 的,我删除了一个数据,那自然就不会连续了,跟后续维护啥的没影响的.
thtznet
2022-12-07 15:24:21 +08:00
最主要的严重后果:强迫症心理会出现问题
wxf666
2022-12-07 17:12:11 +08:00
@cloverzrg2

- 不连续的 ID 会顺序不正确?(变逆序 /随机顺序?)

- 平时连续的 ID 会使什么查询操作变得便捷呢?(俩 uid 间有多少人?)

- 自增 ID 为何会插入重复的 ID ,甚至覆盖原有数据呢?
8355
2022-12-07 18:24:36 +08:00
@wxf666 #18
自增就不会出现他说的问题
我的单表 9 亿数据 月增量超 1 亿 没有任何问题
只要是自增就不会 因为增量值是持续往后滚动的,因为我这边老系统单次任务平均写库 400 万 单条写库 1000 行 所以 id 跳很正常
wxf666
2022-12-07 18:36:50 +08:00
@8355 我主要是没理解,为何『自增不连续 ID 』会出现 @cloverzrg2 说的『`ORDER BY` 失效』、『查询麻烦』、『出现重复 ID 』问题。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/900504

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX