如何处理压缩的十进制字段上的AS400 DB2数据溢出?

时间:2018-08-27 07:06:54

标签: database integer db2 ibm-midrange integer-overflow

我正在使用AS400 IBM i-series机器。问题是我的一个文件中有一个packed-decimal字段。该设计将字段长度设置为9,但是现在我的数据正在增长,并且当数据大于999999999时会发生溢出。因此,对于大于999999999的值,它将变为0,并将剩余的值写入文件中。由于我的机器处于高负载下,并且有很多数据,因此无法更改file design。那么解决这个问题的最佳方法是什么?

这是一个很大的问题,我将不胜感激。谢谢

1 个答案:

答案 0 :(得分:3)

您实际上只有两个选择:更改文件或更改代码。

如果您确实拥有十亿记录,并且这是一个关键字段,那么您应该完成更改文件的过程。如果所有这些记录都不需要处于“活动”状态,那么您可以使用一个额外的键将其中一些记录卸载到“历史”表中,从而可以删除记录并重用其中一些编号。

如果您需要将所有这些数据保持为“实时”,那么您应该计划扩大该字段。首先,在另一个库中对文件进行修改。然后操作您的库列表以使用现有代码对其进行测试。根据需要进行修改和编译。最终,在已知的有限停机时间内,将最新数据放入新文件中,并将新文件和程序交换到生产库中。

如果您不想要这种规模,并且想要尝试更改代码而不是此文件,请问自己为什么数据要占用9位数字来描述它。您是否跳过大块数字?您是否要使某些数字指定某些含义?这些技术可以比顺序删除它们快得多的速度消耗掉它们。您可以更改代码来更改这些数字的分配方式,但是,如果应用程序的多个部分希望它们按照特定的规则集播放,那么更改所有这些位置可能比仅更改文件要耗费更多的工作。根据应用程序的结构,这可能是好事,也可能是坏事。那是你必须做出的判断。