Rpgle 分割键控文件,以实现多线程
我之前在RRN的基础上做了多线程。 这一次,我的文件被设置了键(6个键),并定义为RPGLE程序中的Key seq。。。 因为有数百万条记录,所以需要将文件分成10个线程进行处理。。。。 不确定如何在密钥文件上实现拆分,而不是在RRN上。 请告知。Rpgle 分割键控文件,以实现多线程,rpgle,Rpgle,我之前在RRN的基础上做了多线程。 这一次,我的文件被设置了键(6个键),并定义为RPGLE程序中的Key seq。。。 因为有数百万条记录,所以需要将文件分成10个线程进行处理。。。。 不确定如何在密钥文件上实现拆分,而不是在RRN上。 请告知。 谢谢您真的必须按键处理吗 假设您无论如何都要处理整个过程,RRN对带密钥的文件和对未带密钥的文件一样有效 通过密钥访问文件 FDIVPODIT UF A E K DISK 通过RRN访问同一文件 FDIVPODIT UF A
谢谢您真的必须按键处理吗 假设您无论如何都要处理整个过程,RRN对带密钥的文件和对未带密钥的文件一样有效 通过密钥访问文件
FDIVPODIT UF A E K DISK
通过RRN访问同一文件
FDIVPODIT UF A E DISK
你所需要做的就是离开K
如果您真的需要密钥访问,您必须检查密钥和子密钥的分布,并提出一些分割它们的算法
我的意思是,例如,如果第一个键是一个从1到10的数字,并且每个键都有大约相同数量的记录……那么分成10个线程是显而易见的
注意:即使文件有6个键,也不必全部使用,这两个键对同一个f-spec声明的文件同样有效
setll (ky1:ky2:k3:k4:k5) myfile;
setll (k1) myfile;
这种技术被称为“部分键”
另一个想法是,假设K3是一个从1到10的数字,同样有一组相等的记录。您可以简单地创建一个逻辑索引或SQL索引,其中K3是第一个(可能也是唯一的)键
如果没有关于子密钥分发的更多信息,我不能再多提建议了
最后请注意,SQL提供了count和distinct功能,可以帮助您分析密钥分发
select count(distinct ky1) from myfile
select ky1, count(*) from myfile
DSPFD
也可作为所示信息的一部分使用,包括:
Number of unique partial key values . . :
Key field 1 . . . . . . . . . . . . . : 1
Key fields 1 - 2 . . . . . . . . . . : 48876
Key fields 1 - 3 . . . . . . . . . . : 111861652
您真的必须按键处理它吗 假设您无论如何都要处理整个过程,RRN对带密钥的文件和对未带密钥的文件一样有效 通过密钥访问文件
FDIVPODIT UF A E K DISK
通过RRN访问同一文件
FDIVPODIT UF A E DISK
你所需要做的就是离开K
如果您真的需要密钥访问,您必须检查密钥和子密钥的分布,并提出一些分割它们的算法
我的意思是,例如,如果第一个键是一个从1到10的数字,并且每个键都有大约相同数量的记录……那么分成10个线程是显而易见的
注意:即使文件有6个键,也不必全部使用,这两个键对同一个f-spec声明的文件同样有效
setll (ky1:ky2:k3:k4:k5) myfile;
setll (k1) myfile;
这种技术被称为“部分键”
另一个想法是,假设K3是一个从1到10的数字,同样有一组相等的记录。您可以简单地创建一个逻辑索引或SQL索引,其中K3是第一个(可能也是唯一的)键
如果没有关于子密钥分发的更多信息,我不能再多提建议了
最后请注意,SQL提供了count和distinct功能,可以帮助您分析密钥分发
select count(distinct ky1) from myfile
select ky1, count(*) from myfile
DSPFD
也可作为所示信息的一部分使用,包括:
Number of unique partial key values . . :
Key field 1 . . . . . . . . . . . . . : 1
Key fields 1 - 2 . . . . . . . . . . : 48876
Key fields 1 - 3 . . . . . . . . . . : 111861652
它是定义为键控的旧程序和文件,有SETLL和READE。。。然后是陶氏。。。。。因为此文件具有运行ID,所以他们只想读取最新的运行ID数据…所以您只想处理最新的
运行ID
?您是否尝试过使用单个线程执行此操作,但最终导致性能不佳?你真的需要读多少记录?在一个RunId
中是否有数百万?您是否有一个逻辑键由RunID
?假设RunID是第一个键,那么第二个键中的值的分布是什么<代码>从mytable中选择count(distinct key2),其中runId='xx'您是否在更新记录中的任何类型的已处理标志?它是定义为键控的旧程序和文件,并且有SETLL和READE。。。然后是陶氏。。。。。因为此文件具有运行ID,所以他们只想读取最新的运行ID数据…所以您只想处理最新的运行ID
?您是否尝试过使用单个线程执行此操作,但最终导致性能不佳?你真的需要读多少记录?在一个RunId
中是否有数百万?您是否有一个逻辑键由RunID
?假设RunID是第一个键,那么第二个键中的值的分布是什么<代码>从mytable中选择count(distinct key2),其中runId='xx'您是否正在更新记录中任何类型的已处理标志?