MySQL自增主键删除后,在插入一条记录主键值是否会等于删除的主键值

问题描述:

Mysql主键自增,加入当前主键是20,删掉该记录之后,在插入一条,主键是20还是21?

不同的引擎对于自增值得保存策略不同。

1、MySAM 引擎的自增主键保存在数据文件中

2、InnoDB 引擎的自增值,其实就是保存在了内存里,并且到了Mysql8.0版本后,才有了“自增持久化”的能力,也就是说“如果发生重启,MySQL自增主键可以恢复为Mysql重启前的值”,具体情况如下:

1、在MySQL5.7及之前的版本,自增值保存在内存里面,并没有持久化。每次重启后,第一次打开表的时候,都会去找自增值得最大值max(id),然后将max(id) + 1,作为这个表的当前自增值。

举例来说,如果一个表当前最大的Id是20,AUTO_INCREMENT=21,这时候我们删除id = 20的行,AUTO_INCREMENT还是21,如果我现在马上重启实例,重启后这个表的AUTO_INCREMENT就会变成20,也就就是说MySQL重启可能会修改一个表的AUTO_INCREMENT 。

2、在MySQL8.0版本,将自增值得变更记录在redo log 中,重启的时候依靠redo log恢复重启之前的值。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值