首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复MYSQL auto_increment遗漏的值

问如何修复MYSQL auto_increment遗漏的值
EN

Stack Overflow用户
提问于 2019-05-07 10:07:54
回答 1查看 247关注 0票数 1

我有一个MYSQL表,其中(对一个已经存在的表)我添加了另一个列"Number“,即auto_incremented,并且有一个唯一的键约束。表中有17000+记录。在添加"Number“列后,遗漏一个值--值为14369,下一个值为14371。我尝试删除该列并再次添加它,但缺失的值仍然缺失。问题可能是什么,解决这个问题的最不痛苦的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-07 10:22:41

没有问题,也没有什么要修复的.

MySQL的auto_increment提供了唯一的值,并使用顺序增量算法(只增加一个数字)计算它们。

该算法保证了生成唯一值的最快和准确的方法。那是它的工作。它不会“重用”数字,迫使它这样做会带来灾难性的性能和稳定性。

由于查询有时确实失败,这些数字会“丢失”,您不能让它们返回。

如果您因任何原因需要序列号,请创建一个过程或计划好的事件,并自己维护这些编号。

您必须记住,MySQL是一个事务性数据库,用于在并发访问下操作。如果要重用这些数字,性能将非常糟糕,因为它必须使用锁并迫使人们等到重新组织数字。

默认引擎InnoDB引擎使用主键值在硬盘上组织记录。如果您要更改任何一个值,它将开始重写记录,这将导致大量I/O等待,这取决于磁盘上的数据量--它可能会使整个服务停止。

泰瑞:没有问题,没有什么要解决的,不要做。如果你坚持,期待不正常的行为。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56020224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档