在事务中插入数据并获取了自增ID后,如果事务回滚,插入的数据会被撤销,但已经分配的自增ID不会被回收,从而导致不连续。 批量插入策略: MySQL在批量插入数据时,会采用一种批量申请自增ID的策略。这种策略可能会导致分配的自增ID比实际插入的行数多,从而造成ID不连续。 设置自增步长或偏移量: 如果手动设置了自...
这个语句真正执行的时候,因为碰到唯一键 c 冲突,所以 id=2 这一行并没有插入成功,但也没有将自增值再改回去。 所以,在这之后,再插入新的数据行时,拿到的自增 id 就是 3。也就是说,出现了自增主键不连续的情况。 如下图 3 所示,即一个自增主键 id 不连续的复现步骤: 可以看到,这个操作序列复现了一个...
为什么不连续 MySQL的自增ID不连续可能有以下几种原因: 删除记录:删除某些记录后,自增ID不会回退,而是继续递增。 插入失败:插入操作失败时,自增ID仍然会递增。 服务器重启:在某些情况下,服务器重启可能导致自增ID不连续。 设置自增步长:可以手动设置自增步长,导致ID不连续。 解决方法 删除记录后的处理: 可以使用...
在一些情况下,ID的连续性并不是必需的。如果应用中对ID的连续性没有特殊要求,可以忽略不连续的ID,并将其作为普通的自增长ID使用。 结论 MySQL中ID自增长不连续的原因可能是插入失败、记录被删除或事务回滚等。为了解决这个问题,可以使用自定义ID生成规则、重新排序ID或者忽略ID的连续性。根据具体的业务需求,选择合...
1、虽然表定义了自增主键,但是插入时从全局ID生成器获取ID,导致每个表分配到的ID并不是连续的。 2、表中数据进行过删除。 3、session A插入了数据,获取了自增id为10,session B也插入了数据,但session A回滚了,导致id=10的空洞。 4、设置了innodb_autoinc_lock_mode=2,高并发或批量插入的情况下导致自增ID不...
使用UUID代替自增ID:UUID(Universally Unique Identifier)是一种能够保证全局唯一的标识符。你可以使用UUID作为主键,而不是自增ID,来避免自增ID不连续的问题。 管理好插入和删除操作:在插入和删除数据时,尽量避免发生异常情况,以减少自增ID不连续的可能性。
1. 插入数据导致ID不连续 在某些情况下,我们会手动插入数据到表中,而这些手动插入的数据会导致自增I...
可以看到,这个表的自增值改成 3,是在真正执行插入数据的操作之前。这个语句真正执行的时候,因为碰到唯一键 c 冲突,所以 id=2 这一行并没有插入成功,但也没有将自增值再改回去。所以,在这之后,再插入新的数据行时,拿到的自增 id 就是 3。也就是说,出现了自增主键不连续的情况。四、自增主键值不...