mysql - 如何在 InnoDB 中不回收 auto_increment ID

标签 mysql innodb auto-increment

我最近read由于 InnoDB 在服务器重新启动时重新计算 AUTO_INCREMENT 值的方式,ID 列表高端的任何记录都可能会重用它们的 ID。

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

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

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

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

最佳答案

5.5 文档建议将自动增量值存储在您已有的其他地方。

另一种解决方案是模拟 SEQUENCE,这样您就不会在实际表本身中使用自动递增。这一直是discussed on SO beforeagain . MYSQL Performance blog mentions it .

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

关于mysql - 如何在 InnoDB 中不回收 auto_increment ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10184494/

相关文章:

mysql - 如何在Django中自动切换多个数据库服务器?

mysql - MySQL MASTER 服务器也可以作为 SLAVE 工作吗?

php - 插入查询后,mysqli_insert_id()在同一连接上返回0

php - Json_Encode php 最后一个逗号

mysql - 在mysql中设计数据库模式

mysql - 在 Azure 数据库中为 MySQL 创建 MyISAM 表是否启用?

mysql - 虚假外键约束失败

MySQL select_for_update() 和触发器 .. 阻塞是如何工作的?

php - 防止 InnoDB 在 DUPLICATE KEY 上自动递增

sql - PostgreSQL 通过一个查询增加表的序列