mysql 自增长ID字段丢失问题

本文探讨了在MySQL中,当有自增长ID的表在插入数据后经历删除和宕机重启的情况。在MySQL8.0之前,InnoDB存储引擎的自增ID会因内存丢失而在重启后重新计算,而MyISAM引擎则不会。但在MySQL8.0及以后,InnoDB已将自增ID持久化到磁盘,避免了ID丢失。因此,重启后的自增ID起点取决于具体版本和存储引擎。
摘要由CSDN通过智能技术生成

mysql 自增长ID字段丢失问题

前言

之前面试的时候遇到一个问题,因为平时自己都是用的mysql 8.0+ 版本所以这里踩了一个坑记录一下

一、场景

假如在对一个有自增长ID的一个表新增 id分别为 1,2,3,4,5数据时,在进行删除id 为5的数据成功后,mysql 宕机了,重启了对这张表重新插入数据,那么这个自增长ID 会从多少开始

二、场景分析

1.针对于innodb(MYSQL 事务存储引擎)

在mysql 8.0 版本之前,mysql对于自增长ID属性auto-increment 的值都是存储在内存中的,当mysql发生重启或者宕机的情况下,内存中的值会丢失,这个属性就会被重新计算,计算方式是max(自增长id)+1
在mysql 8.0 之前 针对这个问题进行了修复,把属性auto-increment 放入到了本地磁盘中进行一个持久化的操作

2.对于MyISAM(MYSQL 非事务存储引擎)

MyISAM 的话在mysql 8.0和8.0之后都不会发生自增ID丢失的情况,


总结

例如:上述问题主要需要根据mysql版本和不同存储引擎是否对自增长ID进行一个持久化操作来进行分析不同的情况

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值