自增主键去哪了?---一次开发过程中的思考

💡 原文中文,约4800字,阅读约需12分钟。
📝

内容提要

最近接到一个需求,需要创建两张表,其中一张表需要根据业务id和业务类型建立唯一索引。在联调过程中发现自增主键不连续的问题。自增主键的保存和分配策略因不同的引擎而异。事务回滚也会导致主键丢失。批量插入语句和步长不为1的情况也可能导致主键不连续。MySQL不提供回滚主键id的机制。

🎯

关键要点

  • 最近接到一个需求,需要创建两张表,其中一张表需要根据业务id和业务类型建立唯一索引。
  • 在联调过程中发现自增主键不连续的问题,可能是由于事务回滚、批量插入等原因导致。
  • MySQL的自增主键保存策略因引擎不同而异,MyISAM和InnoDB的处理方式不同。
  • 自增主键不连续的情况包括:手动指定ID、唯一索引冲突、事务回滚等。
  • MySQL不提供回滚主键ID的机制,主要是因为没有必要且会影响性能。
  • 批量插入时,如果出现未使用的主键ID或插入错误,也可能导致主键不连续。
  • 自增主键的步长设置不为1也会导致主键不连续的情况。
  • 在开发过程中,遇到问题是成长的机会,记录问题并分享经验是非常重要的。
🏷️

标签

➡️

继续阅读