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