MySQL 无限制主键自动增量

11

我有一个问题,我非常不确定。 如果必须的话,请随意给我点踩,但我真的很想听听经验更丰富的开发人员的意见。

我正在构建一个网站,希望构建类似于 Google 圈子的功能。

我的逻辑是这样的。 每个用户在注册后都会有附加的圈子。

例如,如果用户注册

表单字段和以下查询将被插入到数据库中:

**id   | circle_name       | user_id**
------------------------------------
1      | circle one        | 1
------------------------------
2      | circle two        | 1
------------------------------
3      | circle three      | 1

每个圆都将有一个 主键

但这是我不确定的,所以经过一段时间后,我有点担心表格会损坏,我的意思是,如果它达到了一定数量的 id,它实际上会停止生成更多。

当您在数据库中指定一个 int 时,默认值为 11,是的,我知道我可以增加或设置它为我想要的值,但是给出更高的值是一个好主意吗?

还是有可能使主键自动递增无限制的方法吗?

谢谢您的意见和帮助


1
就算是这样,int字段的长度也不是实际长度。它基本上只对zerofill列有用(在我看来,零填充的功能也不应该存在于数据库中)。你可以轻松测试一下:尝试将一个5个字符的int插入到int(3)中。它会欣然接受。同样,int > 10不存在(因为2^31-1或2^32-1是10位数字)。 - Corbin
1
如果您每秒插入1M条记录,24x7运行,需要584542年才能达到限制。 @9000.... https://dev59.com/j2025IYBdhLWcg3w25uy - bipen
2个回答

14

还有没有可能使主键自动增量无限制呢?

您可以使用一个 BIGINT

严格来说它不是无限的,但范围非常之大,即使您尽了最大努力,也无法用完所有值。


4
你也可以将它设为未签名的,这样会非常大。 - Dale
2
此外,当您开始达到一个条目数量超过BIGINT无法满足的点时,您可以聘请地球上最聪明的人来解决您的数据库问题。 - Ryan McDonough

4

只需要进行一些数学运算,您就可以自己得出答案。如果一个长度可以存储数十亿个值,并且您不希望每周有100万个新注册用户,那么即使理论上可能导致其破裂,实际上也会是非常困难的


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接