【问题标题】:What if I need a very very big autoincrement ID?如果我需要一个非常大的自动增量 ID 怎么办?
【发布时间】:2011-08-11 08:44:36
【问题描述】:

根据 MySQL 网站,已签名的 bigint 可以达到 18446744073709551615。 如果我需要一个大于自增主键的数字怎么办?

【问题讨论】:

  • 举一个你需要这个已经很大的例子
  • 我想不出有必要这样做的理论上的情况......但如果是这样,只需使用您自己递增的字符串。无论如何,任何数据库都会在命中这么多行之前失败 LONG。

标签: mysql bigint


【解决方案1】:

如果每秒 24x7 插入 100 万条记录,则需要 584542 年才能达到极限。

我希望到那时 MySQL 的下一个版本将支持更大的 ID 列:)

【讨论】:

  • 实际的“数学”是 18446744073709551615 / (1000000*60*60*24*365.25),非常简单:一百万,一分钟 60 秒,一小时 60 分钟,一小时 24 小时一天,一年 365 天(闰年是四分之一,不是必须的)。不需要任何思考。
  • 这个表达式的答案是 58.45420460906263 年,而不是 584542 年,对吧?
  • @Jason:我不知道怎么做。我仍然认为每秒填充一个 64 位计数器将花费超过 58.4 万年。这就是重点:虽然 64 位绝对是有限的,但对于 实际 目的而言,如果是无限的。
  • 也许我应该去别处问问。但我尝试在 Windows 和 MS Excel 上使用“计算器”,但它不能包含所有 18446744073709551615 数字。你们用了什么? C++?
  • @FandiSusanto:我个人使用pythonirbghci,甚至bc,这取决于手头可用的东西。抱歉,calc.exe 是我从不使用的东西之一。尽管 bash 使用 $(( )) 和 elisp 都不能处理这个计算;很多这样的工具都被限制在它们运行的​​架构的 intlong int 大小。
【解决方案2】:

有了这样一个数字(1到18446744073709551615),你可以给地球上所有的动物一个唯一的ID:)

【讨论】:

    【解决方案3】:

    我想你被搞砸了?您可以摆脱 MySQL 的自动增量,并可以使用您自己增量的基数 64。

    【讨论】:

      猜你喜欢
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-16
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      相关资源
      最近更新 更多