PHP 和 Mysql InnoDB 在顺序插入之间的自动增量值中存在差距


PHP & Mysql InnoDB gaps in auto incremental values between sequential inserts

目前我有一个数据库,其中 id 作为主要+自动增量值,另一个称为 refcode 的字段作为唯一值

我注意到当前最后一个id的增量值有很大的差距是762480,而表只包含16553行

有没有办法消除这种行为?我不想要不断插入旧值的 cron 脚本

我应该担心还是不担心

此问题可能是由删除记录引起的 - 如果数据库一致性设置良好,则一切正常。

但有时可能是这种差距是由失败的数据库事务引起的。如果差距像您一样大,我建议在代码中检查使用的数据库事务。

你不用担心。 auto_increment键是连续的,但就表的整个历史记录而言,因此如果您要删除一堆记录,它不会回填旧键或重新索引整个表,因此没有间隙。

这就是

AUTO_INCREMENT列的设计方式。AUTO_INCREMENT的主要目标是始终是唯一的,而不是连续的。

如果是连续的,那么所有事务都需要串行执行(一个接一个),以避免可能的重复,可扩展性将成为问题。

所以你不必担心。