【发布时间】:2011-05-30 15:20:15
【问题描述】:
假设一个巨大的数据库。例如,我有超过 4294967295(对于 mysql INT)用户。在任何类型为 int 和 auto_increment 的列中,如果该列达到最大值会怎样?
【问题讨论】:
-
如果您的 id 用完,您可以选择使用 UUID。例如
SELECT UUID(); -
...或选择更大的数据类型。
假设一个巨大的数据库。例如,我有超过 4294967295(对于 mysql INT)用户。在任何类型为 int 和 auto_increment 的列中,如果该列达到最大值会怎样?
【问题讨论】:
SELECT UUID();
int 将溢出,您将无法在该表中插入更多记录。
【讨论】:
您在下一次插入时收到错误#1062 - Duplicate entry '4294967295' for key 'PRIMARY'。
【讨论】:
会发生溢出,接下来会发生什么取决于数据库。
尽管如此,您确定您的数据库中有 40 亿个条目吗?想想看。理论上的限制不会在现实世界中强加问题。
如果您担心这样的事情,请使用 UUID。
【讨论】:
会发生错误。您可以使用 bigint(64 位),它总是比 128b 的 UUID 更好(如果您不需要它)。
【讨论】: