mysql 自增主键为什么不是连续的?


由于自增主键可以让主键索引尽量地保持递增顺序插入,避免了页分裂,因此索引更紧凑

 

MyISAM 引擎的自增值保存在数据文件中

nnoDB 引擎的自增值,其实是保存在了内存里,并且到了 MySQL 8.0 版本后,才有了“自增值持久化”的能力,也就是才实现了“如果发生重启

表的自增值可以恢复为 MySQL 重启前的值,在 MySQL 5.7 及之前的版本,自增值保存在内存里

每次重启后,第一次打开表的时候,都会去找自增值的最大值 max(id)

然后将 max(id)+1 作为这个表当前的自增值

 

到账自增主键不连续 

1  唯一键冲突是导致自增主键 id 

2 事务回滚也会导致

3  语句执行过程中,第一次申请自增 id,会分配 1 个;

  1个用完以后,还是这个语句,第三次申请自增 id,会分配 2 个;

  2 个用完以后,还是这个语句,第三次申请自增 id,会分配 4个

  如果只用到了iD3 id4就被浪费了 之后再有插入语句 自增id就是从id5开始


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM