| 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 reference.
如果您的 MySQL 表的列 ID (INT unsigned) 具有 auto_increment,并且该表有 4,294,967,295 条记录,那么您尝试再插入 1 条记录,新记录的 ID 将自动更改并设置为最大值是“4,294,967,295”,因此您会收到一条 MySQL 错误消息 Duplicate entry '4294967295' for key 'PRIMARY',如果该列设置为主键,您将有重复的 ID。
2 个可能的解决方案:
-
Easy Approach:通过将 ID 设置为 BIGINT unsigned 来扩展限制,就像 Dan Armstrong 所说的那样。虽然这并不意味着它是牢不可破的!当表变得非常大时,性能可能会受到影响。
-
更困难的方法:Use partitioning,,这是一种更复杂的方法,但性能更好,并且真正没有数据库限制(您唯一的限制是物理硬盘的大小。)。 Twitter(和类似的大型网站)每天使用这种方法处理数百万条推文(记录)!