mysql自增长ID字段丢失问题及解决

 更新时间:2025年09月23日 09:04:01   作者:骑不快的小欧同学  
MySQL 8.0前InnoDB自增ID重启会丢失,重新插入从max+1开始;8.0后持久化到磁盘,保留原有值,MyISAM在8.0及以后版本均不会丢失自增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进行一个持久化操作来进行分析不同的情况

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • mysql 5.7以上版本安装配置方法图文教程(mysql 5.7.12\mysql 5.7.13\mysql 5.7.14)

    mysql 5.7以上版本安装配置方法图文教程(mysql 5.7.12\mysql 5.7.13\mysql 5.7.

    这篇文章主要为大家分享了MySQL 5.7以上缩版本安装配置方法图文教程,包括mysql5.7.12、mysql5.7.13、mysql5.7.14安装教程,包括感兴趣的朋友可以参考一下
    2016-08-08
  • 美团网技术团队分享的MySQL索引及慢查询优化教程

    美团网技术团队分享的MySQL索引及慢查询优化教程

    这篇文章主要介绍了美团网技术团队分享的MySQL索引及慢查询优化教程,结合了实际的磁盘IO情况对一些优化方案作出了分析,十分推荐!需要的朋友可以参考下
    2015-11-11
  • MySQL中int(n)后面的n到底代表的是什么意思

    MySQL中int(n)后面的n到底代表的是什么意思

    这篇文章主要介绍了MySQL中int(n)后面的n到底代表的是什么意思 ,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • MySQL中表索引定义的方法与介绍

    MySQL中表索引定义的方法与介绍

    这篇文章主要给大家介绍了关于MySQL中表索引定义的方法与介绍,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-10-10
  • MySQL中rank() over、dense_rank() over、row_number() over用法介绍

    MySQL中rank() over、dense_rank() over、row_number()&n

    本文主要介绍了MySQL中rank() over、dense_rank() over、row_number() over用法介绍,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 如何用mysqldump进行全量和时间点备份

    如何用mysqldump进行全量和时间点备份

    这篇文章主要介绍了如何用mysqldump进行全量和时间点备份,帮助大家更好的管理MySQL数据库,感兴趣的朋友可以了解下
    2020-08-08
  • 浅谈MySQL大表优化方案

    浅谈MySQL大表优化方案

    这篇文章主要介绍了浅谈MySQL大表优化方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • mysql用户创建与授权的简单实例

    mysql用户创建与授权的简单实例

    MySQL等主流数据库的最高权限一般是root用户,有时我们需要提供数据库的账号和密码以使用某些服务,下面这篇文章主要给大家介绍了关于mysql用户创建与授权的相关资料,需要的朋友可以参考下
    2022-03-03
  • MySQL8 密码强度评估与配置详解

    MySQL8 密码强度评估与配置详解

    MySQL8默认启用密码强度插件,实施MEDIUM策略(长度8、含数字/字母/特殊字符),支持动态调整与配置文件设置,推荐使用STRONG策略并定期更新密码以提升安全性,本文给大家介绍MySQL8密码强度评估与配置,感兴趣的朋友跟随小编一起看看吧
    2025-08-08
  • MySQL乐观锁和悲观锁具体实现

    MySQL乐观锁和悲观锁具体实现

    这篇文章主要介绍了MySQL乐观锁和悲观锁具体实现,文章围绕主题展开详细的内容戒杀,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09

最新评论