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

转载于:https://www.cnblogs.com/gjclr/p/10470792.html

你可能感兴趣的:(数据库)