美文网首页
auto_increment 值的问题

auto_increment 值的问题

作者: winlans | 来源:发表于2017-07-11 21:58 被阅读15次

有时候会碰到一种奇怪的问题,就是自增长的字段,删除之后,新添加的记录有时连续,有时不连续的情况。

MySQL 的auto_increment 的值是被存放在内存中的计数器累加出来的,当我们重启服务器,或者MySQL服务的时候,计数器都会丢失。这时,当我们执行insert操作的时候,MySQL会默认获取到自增长的最大值,类似于使用
SELECT MAX(sid) FROM student FOR UPDATE; 然后再+1
有一个如下表

选区_018.png 初始表
如果我们执行删除sid=5的操作 delete sid=5

然后执行插入

insert操作
我们发现sid的值是6而不是5,这是因为自加并非是按照字段的最大值来加的,而是根据内存中的计数器算出来的。
现在,让我们删除sid=6的记录 delete sid=6
然后重启服务器,service mysql restart
再次执行插入操作 insert操作
自增长又是连续的了,这是因为,我们重启mysql服务之后,计数器丢失,当我们执行insert操作的时候,MySQL又为我们重新创建了一个计数器,获取自增长最大值的方式,或许就是SELECT MAX(sid) FROM student FOR UPDATE;

相关文章

网友评论

      本文标题:auto_increment 值的问题

      本文链接:https://www.haomeiwen.com/subject/xffvhxtx.html