目前,我们系统中的主键长度为10位,刚超过Java Integers的限制。我希望避免因这些键中的数字溢出导致的任何维护问题,但同时我不想牺牲很多系统性能来存储我永远不需要的无限大数字。

您如何处理管理主键的大小?我最好坚持使用Java整数,以获得超过更大Long的性能优势,并在需要时增加大小,或者我应该咬紧牙关,使用Java Long来获取大多数PK,并且永远不必担心溢出序列大小?

有帮助吗?

解决方案

我总是使用长按键(数据库中的数字(18,0))因为它们只是消除了在几乎所有情况下发生这种情况的可能性(除了极端数据囤积样式应用程序)。在密钥的所有表中具有相同的数据类型意味着您可以在父类中的所有模型对象之间共享该字段,以及为SQL获取者提供一致的代码,等等。

其他提示

似乎答案取决于您使用数据溢出Java整数的可能性。如果不知道你的数据是什么,就没有办法知道。

性能优势可以忽略不计,所以我的建议是使用长按键。不得不处理这个问题可能是一个很大的麻烦。

这是存储和使用长整数的成本与溢出32位整数的可能性之间的平衡。

考虑无符号的32位整数存储超过40亿个值。如果您认为在接下来的136年中您将在此表中每秒平均超过1个新行,那么您需要使用Long。

java中的32位整数是有符号整数,所以只有20亿。如果由于某种原因,你的SEQUENCE不断跳跃,那么你的PK之间会有一些差距。

长时间没有坏处(请记住Y2K问题的发生是因为一些COBOL开发人员认为他们会在日期中保存一些字节?): - )

因此,我总是使用Long。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top