我有一个带有自动递增主键的表。该表旨在存储数百万条记录,我现在不需要删除任何内容。问题是,当插入新行时,由于某些错误,自动增量键在自动增量ID中保留了一些间隙。例如,在5之后,下一个ID为8,而间隙为6和7 。结果是当我计算行数时,结果为28000,但最大id为58000。我没有删除任何内容。以及如何解决此问题。
PS我在插入记录时使用插入忽略,以便当我尝试在唯一列中插入重复项时不会出现错误。
这是设计使然,将永远发生。
为什么?
让我们以两个正在执行INSERT的重叠事务为例
事务1执行INSERT,获取值(比方说42),执行更多工作 事务2执行INSERT,获取值43,执行更多工作 然后
事务1失败。回滚。42未使用 交易2完成43 如果保证了连续的值,则每笔交易都必须接连发生。伸缩性不是很好。
另请参阅“插入记录是否始终接收连续的标识值”(SQL Server,但适用相同的原理)来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。