什么是自动增量在mysql中可以产生的最大的ID号码

我有一个数据库,迅速填充数据,我们每天谈论10-20K行。

什么是ID和自动增量选项的限制? 如果ID被创build为INTEGER那么我可以做最大值2,147,483,647无符号值?

但是什么时候自动增量超过这个? 这一切都崩溃了吗? 那么什么解决scheme?

我相信很多人都有大的数据库,我想听听他们。

谢谢。

如果你担心它太快出界了,我会把PK设置为一个UNSIGNED BIGINT。 这给了你最大的价值18446744073709551615,这应该是足够的。

INT签署:

最小= -2,147,483,648

最大= +2,147,483,647

INT无符号:

Min = 0

最大= 4,294,967,295

如果你有一个带有列ID(INT无符号)的mysql表,并且该表有4,294,967,295条logging,那么你试着再插入1条logging,新logging的ID将被自动改变并设置为最大值“4,294,967,295”。 所以你得到一个MySQL错误信息Duplicate entry '4294967295' for key 'PRIMARY'

如果ID列被设置为主键,则会有重复的ID。

2可能的解决scheme

  1. 简单的方法 :通过将ID设置为BIGINT无符号来扩展限制,就像Dan Armstrong所说的那样。 虽然这并不意味着它是牢不可破的! 当表格变得非常大时,性能可能会受到影响。
  2. 更难的方法 : 使用分区,这是一个更复杂的方法,但提供更好的性能,真正没有数据库限制(你唯一的限制是物理硬盘的大小)。 Twitter(以及类似的大型网站)每天使用这种方法来处理数百万条推文(logging)!