开发者社区> 问答> 正文

自动增加主要的计数差距?mysql

我有一个带有自动递增主键的表。该表旨在存储数百万条记录,我现在不需要删除任何内容。问题是,当插入新行时,由于某些错误,自动增量键在自动增量ID中保留了一些间隙。例如,在5之后,下一个ID为8,而间隙为6和7 。结果是当我计算行数时,结果为28000,但最大id为58000。我没有删除任何内容。以及如何解决此问题。

PS我在插入记录时使用插入忽略,以便当我尝试在唯一列中插入重复项时不会出现错误。

展开
收起
保持可爱mmm 2020-05-17 20:29:11 1031 0
1 条回答
写回答
取消 提交回答
  • 这是设计使然,将永远发生。

    为什么?

    让我们以两个正在执行INSERT的重叠事务为例

    事务1执行INSERT,获取值(比方说42),执行更多工作 事务2执行INSERT,获取值43,执行更多工作 然后

    事务1失败。回滚。42未使用 交易2完成43 如果保证了连续的值,则每笔交易都必须接连发生。伸缩性不是很好。

    另请参阅“插入记录是否始终接收连续的标识值”(SQL Server,但适用相同的原理)来源:stack overflow

    2020-05-17 20:37:49
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像