您错误地认为IBM i上的“FILE”就像是Windows / Unix / Linux上的文件。
不是。
与IBM i中的每个其他对象类型一样,它是一个定义良好的接口的对象。
在* FILE对象的特定情况下,它是一个数据库表。 DB2 for i不是安装在操作系统顶部的附加DBMS; DB2 for i只是它们为集成到OS中的DBMS提供的名称。用户程序不能像在Windows / Unix / Linux上那样直接打开存储空间。您必须通过操作系统提供的接口。
有两个可用接口,记录级访问(RLA)或SQL。两者都可以在Java应用程序中使用。 RLA由com.ibm.as400.access.AS400File类提供。 SQL访问由JDBC类提供。
SQL可能提供最佳性能,因为您使用RLA一次处理一组记录而不是一个。
从性能角度来看,您的单个流程不太可能完全利用系统,即。 CPU使用率不会达到100%,磁盘活动也不会超过60-80%。
在这种情况下,最好的办法是将流程分解为多个流程。您需要某种方法将每个进程限制为一组选定的记录。可能是主键隔离。除非记录是主键顺序,否则这将增加一些开销。如果表没有删除记录,则使用RRN()按物理顺序隔离可能有效。但请注意,在较旧版本的操作系统上,使用RRN()需要进行全表扫描。