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开始