当前位置:网站首页>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运算。
边栏推荐
- Go 语言快速入门指南: 介绍及安装
- 后台图库上传功能
- R语言ggplot2可视化:使用ggpubr包的ggline函数可视化折线图、设置add参数为mean_se和dotplot可视化不同水平均值的折线图并为折线图添加误差线(se标准误差)和点阵图
- 从零开始Blazor Server(6)--基于策略的权限验证
- 【MySQL】数据库进阶之索引内容详解(上篇 索引分类与操作)
- 子结点的数量
- FE主导打造一个运营活动平台
- Vs 快捷键---探索不一样的编程
- pandas连接oracle数据库并拉取表中数据到dataframe中、生成当前时间的时间戳数据、格式化为指定的格式(“%Y-%m-%d-%H-%M-%S“)并添加到csv文件名称中
- bash while loop and until loop
猜你喜欢
随机推荐
随机森林项目实战---气温预测
pandas连接oracle数据库并拉取表中数据到dataframe中、生成当前时间的时间戳数据、格式化为指定的格式(“%Y-%m-%d-%H-%M-%S“)并添加到csv文件名称中
用C语言解决A+B问题,A-B问题,A*B问题
零信任的基本概念【新航海】
LeetCode-1161. 最大层内元素和
【一起学Rust 基础篇】Rust基础——变量和数据类型
一次内存泄露排查小结
最牛逼的集群监控系统,它始终位列第一!
无监督学习KMeans学习笔记和实例
基于Sikuli GUI图像识别框架的PC客户端自动化测试实践
Vs 快捷键---探索不一样的编程
Simple implementation of a high-performance clone of Redis using .NET (1)
viewstub 的详细用法_pageinfo用法
第3章 搭建短视频App基础架构
广州番禺:暑期防溺水,安全不放假
asdn涨薪技术之apifox+Jenkins如何玩转接口自动化测试
面试突击71:GET 和 POST 有什么区别?
LeetCode刷题笔记:105.从前序与中序遍历序列构造二叉树
OFDM 十六讲 4 -What is a Cyclic Prefix in OFDM
【MySQL】数据库进阶之索引内容详解(上篇 索引分类与操作)








