当前位置:网站首页>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运算。
边栏推荐
猜你喜欢
随机推荐
进程内存
数据库系统原理与应用教程(074)—— MySQL 练习题:操作题 141-150(十八):综合练习
R语言绘制时间序列的自相关函数图:使用acf函数可视化时间序列数据的自相关系数图
国内数字藏品与国外NFT主要有以下六大方面的区别
【一起学Rust】Rust包管理工具Cargo初步了解
__unaligned修饰指针
[深入浅出]三位数排序
第4章 搭建网络库&Room缓存框架
【Verilog】HDLBits题解——Circuits/Sequential Logic/Latches and Flip-Flops
pytorch+tensorboard使用方法
字节最爱问的智力题,你会几道?
Take you understand the principle of CDN technology
深度学习:文本CNN-textcnn
缓存--伪共享问题
长城简漫·暑期安全篇⑤ 这个强,不能逞
87.(cesium之家)cesium热力图(贴地形)
《数字经济全景白皮书》金融数字用户篇 重磅发布!
OFDM 十六讲 4 -What is a Cyclic Prefix in OFDM
面试官:SOA 和微服务的区别?这回终于搞清楚了!
子结点的数量