MySQL自增主键一定是连续的吗

本文讨论了MySQL自增主键在不同版本中是否保证连续的问题,指出5.7版本之前的内存计数器可能导致不连续,8.0版本引入redo日志改善了这一问题。同时,由于并发插入可能引发冲突,保证连续性需使用Serializable事务模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

​​​​​​四种情况不是连续的:

  1. 自增初始值和自增步长设置不为 1
  2. 唯一键冲突
  3. 事务回滚
  4. 批量插入(如 insert...select 语句)

MySQL自增主键一定是连续的吗 | JavaGuide

  •  MySQL 5.7 版本之前在内存中存储 AUTO_INCREMENT 计数器,实例重启后会根据表中的数据重新设置,在删除记录后重启就可能出现重复的主键,该问题在 8.0 版本使用redo日志解决,保证了主键的单调性;
  • MySQL 插入数据获取 AUTO_INCREMENT 时不会使用事务锁,而是会使用互斥锁,并发的插入事务可能出现部分字段冲突导致插入失败,想要保证主键的连续需要Serialiable串行地执行插入语句;

为什么 MySQL 的自增主键不单调也不连续 - 面向信仰编程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值