当前位置:网站首页>Mysql重启后innodb和myisam插入的主键id变化总结
Mysql重启后innodb和myisam插入的主键id变化总结
2022-08-03 12:07:00 【InfoQ】
以下分析使用案例
案例1
:已有id 1,2,3,4,5,6,7 删除5,6
案例2
:已有id 1,2,3,4,5,6,7 删除6,7
Mysql8.0以前
innodb:
结果:会取出记录中最大id值,作为起始点加1,进行递增。
案例1:
因为删除5,6剩下的7最大,所以再新增数据的时候是从8开始。
案例2:
因为删除6,7剩下的5最大,所以再新增数据的时候是从6开始。
myisam:
结果:myisam自增的时候会把自增的最大值存到文件中,重启后会从文件中去除之前插入的时候最大id值加1,作为起始点,进行递增。
案例1:
删除5,6,但是之前记录的最大为7,所以再新增数据的时候是从8开始。
案例2:
删除6,7,但是之前记录的最大为7,所以再新增数据的时候是从8开始。
Mysql8.0以后
innodb做了改进,就是在更新自增id值之后,会把这个id的最大值记录到redolog中的计数器和系统文件中的计数器,重启之后取值的时候是主要从这两个进行分析的。
正常关闭重启
正常关闭后,重新启动会直接去系统文件中取出计数器的值,以计数器的值加1进行之后插入数据的自增id计算。
异常宕机重启
异常关闭重启后,会从系统文件中取出计数器中的值,并且会从redolog中取出计数器的值,把这两个值进行比较找出最大的值,并把最大的值加1进行之后的插入数据的自增id运算。
边栏推荐
猜你喜欢
随机推荐
苹果发布 AI 生成模型 GAUDI,文字生成 3D 场景
码率vs.分辨率,哪一个更重要?
[深入浅出]三位数排序
【MySQL功法】第5话 · SQL单表查询
Go 语言快速入门指南: 介绍及安装
一个扛住 100 亿次请求的红包系统,写得太好了!!
fastposter v2.9.0 程序员必备海报生成器
基于Sikuli GUI图像识别框架的PC客户端自动化测试实践
Redis发布订阅和数据类型
【Mysql】清理binlog日志的方法
LeetCode刷题笔记:622.设计循环队列
LyScript implements memory stack scanning
基于Sikuli GUI图像识别框架的PC客户端自动化测试实践
-树的高度-
Knowledge Graph Question Answering System Based on League of Legends
Take you understand the principle of CDN technology
后台图库上传功能
C language advanced article: memory function
RTP协议分析
小身材有大作用——光模块寿命分析(二)