在AS400上同时进行文件访问的最佳方法是什么?

时间:2011-11-30 15:54:52

标签: file batch-file ibm-midrange

我正在尝试编写一个将在AS400上批量运行的程序。该程序将把一条记录写入文件以反映其处理状态,例如,刚刚提交时它会添加一条记录表明它当前正在运行,并且当它完成时它会更新相同的记录,说它已经完成。如果我想多次提交这个程序批处理,那么应对这种类型的同步文件访问以提高效率的最佳方法是什么?我不希望作业锁定整个文件并阻止其他人同时更新它。它可以锁定所需的记录,并将其余部分留给其他人。怎么做到这一点? RPGLE还是QMQRY?还是其他任何方法?

2 个答案:

答案 0 :(得分:4)

RPG不会锁定整个文件,只会锁定记录。

答案 1 :(得分:0)

就个人而言,即使通过RPG,我也建议使用SQL(几乎)所有文件访问。 IBM一段时间没有更新他们的Native I / O,只专注于SQL方面。

因为在正常使用期间,一旦执行了写入或更新,就会释放RPG中的记录锁,您应该只是让SQL运行WITH NC(无提交)。你需要一种方法来处理一个处理作业与它正在处理的数据无论如何(假设东西长时间运行,以至于事物都在QTEMP之外的文件中) - 你希望能够如果您的工作死亡,那么请从您离开的地方继续(因此,您不能依靠将锁作为控制机制)。因此,不要忘记您将需要某种监视工作(至少可以报告状态,如果不重新提交,请查看QUSRJOBI API)。

如果您这样做是因为您正在使用所有Native I / O,并处理大量数据(不是巨大的,处理器密集型计算),请考虑将所有内容重写为SQL。认真。你可以获得更好的性能 - 我们已经采用了一个过去运行25个小时以上的过程,运行的是2.5ish。