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进行一个持久化操作来进行分析不同的情况
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
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中rank() over、dense_rank() over、row_number()&n
本文主要介绍了MySQL中rank() over、dense_rank() over、row_number() over用法介绍,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2022-03-03


最新评论