-1

在我的主机最近进行了更改后,所有 auto_increment 列都增加了 2。在向我的主人发送电子邮件后,他们是这样说的:

该站点位于我们新的负载平衡共享平台上。新集群上会出现这种行为。自动递增实际上不会影响表的性能或工作,您仍然可以对表进行计数并以相同的方式使用任何递增的列。只要您直接检查数据库,您就会看到这些数据增加了 2。

最终,当我们在整个平台上执行此更新时,此行为将应用于我们所有的服务器。

我想知道的是:他们说的对吗?在我看来,自动增量列应该增加一而不是二!!

这将导致一些使用它来生成订单号等的旧网站出现一些问题。

但是,我所拥有的其他一切都将继续正常工作,只是有点烦人。

4

2 回答 2

3

不管你的主机的细节,如果一段代码依赖于自动递增总是一个接一个地进行并且没有漏洞,那么代码是错误的,因为这从来都不是保证。

您拥有的唯一保证是该列不会有重复项,并且新行将具有该列的下一个序列值;这通常是最后一个值 + 1,但不能保证 - 保证它将是一个,因此它不会返回并填充孔。

于 2013-05-18T15:04:52.313 回答
1

这在多主 MySQL 设置中很常见,以防止主键发生冲突。

如果您要同时向两个负载平衡服务器添加一行,它们都将尝试使用 auto_increment ID(例如 51)插入。您会收到错误并且复制会中断。

因此,在两台服务器设置中,服务器 1 插入 1、3、5、7 等,服务器 2 插入 2、4、6、8 等。

于 2013-05-18T15:21:15.220 回答