如何处理压缩十进制字段上的 AS400 DB2 数据溢出?
How to handle AS400 DB2 data overflow on a packed decimal field?
我正在使用 AS400 IBM i-series
机器。问题是我的一个文件中有一个 packed-decimal
字段。设计已将字段长度设置为 9,但现在我的数据在增长,当数据大于 999999999 时,会发生溢出。因此,对于大于 999999999 的值,它变为 0,并将剩余的值写入文件。由于我的机器处于高负载状态并且有大量数据,因此我无法更改 file design
。那么处理这个问题的最佳方法是什么?
这是一个非常大的问题,我将不胜感激任何帮助。谢谢
您实际上只有两个选择:更改文件或更改代码。
如果您确实有十亿条记录,并且这是一个关键字段,那么您应该完成更改文件的过程。如果所有这些记录都不需要 "live",那么您可以使用一个额外的密钥将其中一些记录卸载到 "historical" table,这样您就可以删除记录并重复使用其中一些数字。
如果您需要将所有这些数据保留为 "live",那么您应该计划扩大该字段。首先在另一个库中制作文件的修改版本。然后操纵您的库列表以使用现有代码对其进行测试。根据需要修改和编译。最后安排一个已知的有限停机时间,将最新数据放入新文件,并将新文件和程序交换到生产库中。
如果您没有达到那种规模并且想尝试更改您的代码而不是此文件,请问问自己为什么数据占用九位数字来描述它。您是否正在跳过大块数字?您是否试图让某些数字指定某些含义?这些技术可以比按顺序取出数字更快的速度吃掉数字。您可以更改代码以更改这些数字的分配方式,但如果应用程序的多个部分希望它们按照一组特定规则进行播放,则更改所有这些位置可能比仅更改文件要工作得多。这可能更好也可能更坏,具体取决于应用程序的结构。这是你必须做出的判断。
我正在使用 AS400 IBM i-series
机器。问题是我的一个文件中有一个 packed-decimal
字段。设计已将字段长度设置为 9,但现在我的数据在增长,当数据大于 999999999 时,会发生溢出。因此,对于大于 999999999 的值,它变为 0,并将剩余的值写入文件。由于我的机器处于高负载状态并且有大量数据,因此我无法更改 file design
。那么处理这个问题的最佳方法是什么?
这是一个非常大的问题,我将不胜感激任何帮助。谢谢
您实际上只有两个选择:更改文件或更改代码。
如果您确实有十亿条记录,并且这是一个关键字段,那么您应该完成更改文件的过程。如果所有这些记录都不需要 "live",那么您可以使用一个额外的密钥将其中一些记录卸载到 "historical" table,这样您就可以删除记录并重复使用其中一些数字。
如果您需要将所有这些数据保留为 "live",那么您应该计划扩大该字段。首先在另一个库中制作文件的修改版本。然后操纵您的库列表以使用现有代码对其进行测试。根据需要修改和编译。最后安排一个已知的有限停机时间,将最新数据放入新文件,并将新文件和程序交换到生产库中。
如果您没有达到那种规模并且想尝试更改您的代码而不是此文件,请问问自己为什么数据占用九位数字来描述它。您是否正在跳过大块数字?您是否试图让某些数字指定某些含义?这些技术可以比按顺序取出数字更快的速度吃掉数字。您可以更改代码以更改这些数字的分配方式,但如果应用程序的多个部分希望它们按照一组特定规则进行播放,则更改所有这些位置可能比仅更改文件要工作得多。这可能更好也可能更坏,具体取决于应用程序的结构。这是你必须做出的判断。