4

我最近读到,由于 InnoDBAUTO_INCREMENT在服务器重新启动时如何重新计算值,ID 列表高端的任何记录都可能被重用其 ID。

通常,这不是问题,因为当删除用户时,与该 ID 关联的所有内容也会从其他表中删除。

但我故意让他们的论坛帖子成为孤立的,标记为“由=User #123=发布”,以便保留过去的对话。显然,如果一个 ID 被重用,这将是一个问题。

我以前从未遇到过这个问题,因为总是有足够多的新用户使 ID 不太可能以这种方式被重用。然而,在我的新项目中,注册很少见,并且经常删除非活动用户(特别是因为“Open Alpha”帐户仅持续三天作为预览),并且这种 ID 重用现在已经发生了三对三。

我通过为AUTO_INCREMENT其他地方保存正确的值并使用它而不是依赖内部值来“解决”这个问题。有没有一种实际的方法让 InnoDB 记住实际的最后一个值?

4

1 回答 1

1

5.5 文档建议将自动增量值存储在您已经拥有的其他位置。

另一种解决方案是模拟 SEQUENCE ,这样您就不会在实际表本身中使用自动增量。这已经在 SO上反复讨论过MYSQL 性能博客提到了它。

又一个 MySQL 数据搞砸了其他 RDBMS 没有......

于 2012-04-17T07:28:01.747 回答