我们有一个系统每秒可以获得1000个查询,并且每天都会添加几千个注释。票据表超过250万条记录。我们永远不会删除一个音符,我刚刚发现在今天该表的id增量字段中有19个缺少的id。
有什么想法吗?
我们正在使用mysql4,正在努力进入5。 我们也在Windows 2003上运行
答案 0 :(得分:2)
这可能是INSERT查询由于各种原因而失败,或者是在事务中回滚的。
答案 1 :(得分:0)
您无法保证ID是连续的。通常会发生的事情是事务被回滚。这可能由于很多原因而发生 - 例如,死锁。在插入行之前分配ID,因此如果插入创建死锁,并且线程丢失,则事务将回滚,插入失败,并且ID被“浪费”。
这不是一种异常情况;每个应用程序都需要能够容忍(某些)死锁。这是使用InnoDB等引擎的一部分(在MSSQL,Oracle等上同样发生)。