我有一个快速填充数据的数据库,我们每天谈论10-20k行。
ID和自动增量选项的限制是多少?如果ID被创建为INTEGER,那么我可以为无符号值做最大值2,147,483,647?
但是当自动增量高于此值时呢?这一切都崩溃了吗?那会有什么解决方案呢?
我确信很多人都拥有大型数据库,我想听听他们。
谢谢。
答案 0 :(得分:58)
如果你担心它过快地超出界限,我会将PK设置为UNSIGNED BIGINT。这样您的最大值为18446744073709551615,这应该足够了。
答案 1 :(得分:27)
| Min. (inclusive) | Max. (inclusive)
-----------------------------------------------------------------------------
INT Signed (+|-) | -2,147,483,648 | +2,147,483,647
-----------------------------------------------------------------------------
INT Unsigned (+) | 0 | 4,294,967,295
-----------------------------------------------------------------------------
BIGINT Signed (+|-) | -9,223,372,036,854,775,807 | +9,223,372,036,854,775,806
-----------------------------------------------------------------------------
BIGINT Unsigned (+) | 0 | 18,446,744,073,709,551,615
如果您的mysql表具有列ID(INT unsigned),并且该表有4,294,967,295条记录,那么您尝试再插入1条记录,新记录的ID将自动更改并设置为最大值“ 4,294,967,295“,因此您收到MySQL错误消息Duplicate entry '4294967295' for key 'PRIMARY'
,如果将列设置为主键,您将拥有重复的ID。
2可能的解决方案: