千家信息网

MySQL自增主键为什么不连续

发表于:2024-11-16 作者:千家信息网编辑
千家信息网最后更新 2024年11月16日,MySQL自增主键为什么不连续,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在我们日常使用Mysql中,如果不是特殊的业务需要,一般
千家信息网最后更新 2024年11月16日MySQL自增主键为什么不连续

MySQL自增主键为什么不连续,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

在我们日常使用Mysql中,如果不是特殊的业务需要,一般我们都会使用自增主键,自增主键的好处可以在插入的时候尽量地减少页分割,增加Mysql的写入效率。我们有时候就会发现,自增主键并不是连续递增的,为什么有时候会出现自增主键的空洞呢?

即便是使用自增主键的表,也是可以指定主键的。假设当前的自增主键是X,我们指定的主键是Y,假如Y

第二种出现间隔的原因,是因为Mysql插入失败了。首先我们要了解自增主键的原理,当我们向一张主键自增的表中插入数据的时候,如果Mysql发现你没有带主键,就会去自增表里面申请一个主键,当申请成功之后,就会拿着这个主键去做真实的Insert操作,但是在这个过程中,Insert可能会失败,例如主键或者唯一键冲突等。或者出现事务回滚,Mysql是不会回滚对应的自增主键的值的。为什么Mysql会这么做呢?这个并不难理解,因为当我们申请主键的时候,其他事务也会申请主键,假如事务发生回滚的时候,是否还要考虑其他事务的状态呢?这是个非常复杂又消耗性能的问题,另一方面,自增主键比较大的作用是避免页分割,我们只需要数据是递增而无需连续。

第三种出现间隔的原因,是Mysql的主键申请机制。假如我们是批量插入的,那么批量申请多个主键的效率会比逐个申请要快得多得多。按道理来说,Mysql是有多少条新数据就申请多少个自增主键的,但是有一些情况,Mysql并不知道最终插入的数据有多少,例如Insert...Select语句。Mysql的申请策略是使用倍增法去申请,所以,假如Insert...Select的结果是4条数据,那么最终会申请1+2+4=7个主键值,就会有3个浪费了。

关于MySQL自增主键为什么不连续问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

数据 事务 时候 问题 调整 原因 效率 更多 有时候 冲突 帮助 解答 复杂 易行 特殊 成功 多得多 简单易行 业务 也就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 如何看表格具体数据库 软件开发培训班需要什么资质 国内棋牌高防服务器 泰鸿vip网络技术咨询 莫格莱尼服务器什么时候开 长沙高新区网络安全宣传周 可乐网络技术有限公司 软件开发要准备什么条件 饭客网络安全工程师 校园网络安全知识答题答案 长春工业大学网络安全专业有哪些 启明星辰网络安全审计 数据库定期巡查监督 数据库怎么保留查询的记录 半次元简直是我的图片数据库 青岛编程软件开发价格 计算机网络技术包括信息安全吗 火绒安全病毒服务器 dell服务器温度传感器在哪里 泸州云游互联网科技有限公司 查询数据库导出 微擎数据库该怎么填 存数据库中vmdk文件锁定 网络技术与警务工作的渊源 神武服务器等级 网络系统管理比赛服务器配置 重启服务器服务会关吗 计算机网络技术买什么笔记本 任正非网络技术怎么样 徐汇区手机软件开发培训
0