我有一个数据库,它快速填充了我们每天谈论 10-20k 行的数据。
带有自动增量选项的 ID 的限制是什么?如果 ID 被创建为 INTEGER 那么我可以为无符号值做 2,147,483,647 的最大值吗?
但是当自动增量超过这个值时怎么办?一切都崩溃了吗?那会有什么解决办法呢?
我相信很多人都有大数据库,我想听听他们的意见。
谢谢你。
我有一个数据库,它快速填充了我们每天谈论 10-20k 行的数据。
带有自动增量选项的 ID 的限制是什么?如果 ID 被创建为 INTEGER 那么我可以为无符号值做 2,147,483,647 的最大值吗?
但是当自动增量超过这个值时怎么办?一切都崩溃了吗?那会有什么解决办法呢?
我相信很多人都有大数据库,我想听听他们的意见。
谢谢你。
如果您担心它增长过快,我会将 PK 设置为 UNSIGNED BIGINT。这给你一个最大值 18446744073709551615,这应该足够了。
| 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) 具有 auto_increment,并且该表有 4,294,967,295 条记录,那么您尝试再插入 1 条记录,新记录的 ID 将自动更改并设置为最大值“4,294,967,295 ",因此您会收到一条 MySQL 错误消息Duplicate entry '4294967295' for key 'PRIMARY'
,如果该列设置为主键,您将有重复的 ID。
2个可能的解决方案: