【发布时间】:2010-12-30 22:08:44
【问题描述】:
我正在制作一个可以在 SQL Server 和 PostgreSQL 上运行的应用程序,所以我要问这个关于它们的问题。
当您创建一个唯一的主键(使用序列或自动增量类型的东西)并点击超过 40 亿条记录(32 位)时会发生什么?我并不是说我们的表将有 40 亿条记录,而是说已经创建了 40 亿条记录,因为 RID 只会增加。所以即使我删除了 39 亿条记录,我的 RID 仍然在 40 亿条范围内。那么会发生什么?它是把精度提高到 64 位还是翻转到 0 或者只是吐出一个非常严重的错误?我是否应该担心即使是 64 位 RID 也可能最终溢出?
另外,我该如何解决这个问题? 是否有某种清理选项或工具?我是否只需要每年创建自己的东西或完全重建表以获得一致的 RID? (因此也触及了许多使用这些 RID 的其他表是外键)
【问题讨论】:
-
是的,32 位自动增量值会溢出。 *.com/questions/261815/…
-
在我的一生中?还是大约10年?当数据库充满非常关键的数据时,我绝对不想在 10 年内修复这个错误
-
在你的一生中。 2^64 = 1.8 x 10^19 行,即 1800 万行。您会在 100 万年内每年创建超过 18 万亿行吗?
-
嗯.. 好点.. 出于某种原因,我一直认为 64 位更接近 48 位.. 哈哈
-
你至少可以捍卫这样的假设,即 64 位对于你的新机器人霸主来说在奇点之后就足够了。
标签: sql-server postgresql scalability rowid