免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Eagle_wolf
打印 上一主题 下一主题

读遍一个大文件有什么好的方法吗? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-01-04 19:38 |只看该作者
我说我的想法:
1。重整
2。rrn分段
3。submit多个rpg,并且确定首尾rrn,进行并行计算。
我觉得这样能够缩短时间。

论坛徽章:
0
12 [报告]
发表于 2006-01-04 20:20 |只看该作者
依你这么说,那就是设计该大文件时,根本不应该这么大,可以把它分拆成多个。

我在RS6000 DB2上处理过几十T的数据,如果不分表的话,可能出现几个T的表,如果不分拆的话,就算有机器可以搞定,但也没有这样的存储设备支持得了那样的速度,分表后没有任何问题。

论坛徽章:
0
13 [报告]
发表于 2006-01-04 20:23 |只看该作者
把该表分拆吧,我在rs6000 DB2上处理几十T的数据也是这样设计的

论坛徽章:
0
14 [报告]
发表于 2006-01-05 08:54 |只看该作者
原帖由 wildfish 于 2006-1-4 19:38 发表
我说我的想法:
1。重整
2。rrn分段
3。submit多个rpg,并且确定首尾rrn,进行并行计算。
我觉得这样能够缩短时间。

是个方法,不过要写很多个程序,而且以后数据在增加还要改程序,每次执行程序之前还要重整(这个的时间也不短)
也想过用share open的方法,但是它要求在同一个job下,不能并行运行程序

论坛徽章:
0
15 [报告]
发表于 2006-01-05 08:57 |只看该作者
原帖由 tme45 于 2006-1-4 20:23 发表
把该表分拆吧,我在rs6000 DB2上处理几十T的数据也是这样设计的

恩,这个是设计的问题,如何拆分?

论坛徽章:
0
16 [报告]
发表于 2006-01-05 18:21 |只看该作者
下午利用线程试了一下,利用共享文件指针的方法确实能提高很多,单进程12000条记录,没条记录用1/100000秒去处理,需要140秒,而多线程(14)同样情况下只用了不到50秒
但是由于rpgle不支持递归,只能c写 但是c操作database file 实在是太费事了 不太好

论坛徽章:
0
17 [报告]
发表于 2006-01-09 14:55 |只看该作者
原帖由 Eagle_wolf 于 2006-1-4 16:47 发表
需要对符合某些条件的数据作特殊处理,只能遍历整个文件了



个人意见,不必那么复杂,你不是说符合某些条件么?弄一个复合KEY,如TOSKEY,用这个TOSKEY  去  READE   在FILE,不知能不能满足楼主需要(只找符合条件的,根本不必一条一条去读);另外建议也可以采用OPNQRYF试试。

论坛徽章:
0
18 [报告]
发表于 2006-01-10 13:04 |只看该作者
OPNQRYF应该更加慢的!

理想状态应该是对线程、多作业或者将档案拆分!

^_^

[ 本帖最后由 coolk 于 2006-1-10 13:06 编辑 ]

论坛徽章:
0
19 [报告]
发表于 2006-01-11 00:26 |只看该作者
没有完全领会楼主的意图,但是如果确实只是要读遍一个大文件,无非就是先DSPFD取出总记录数(记得加加上deleted的,不然就不准了),然后除一下你准备并行的总进程数,得到每个进程要处理的记录条数,最后CALL   RPG程序的时候,带上一个起始记录号,一个结束记录号就OK了。

论坛徽章:
0
20 [报告]
发表于 2006-01-11 10:42 |只看该作者
原帖由 tme45 于 2006-1-4 20:20 发表
依你这么说,那就是设计该大文件时,根本不应该这么大,可以把它分拆成多个。

我在RS6000 DB2上处理过几十T的数据,如果不分表的话,可能出现几个T的表,如果不分拆的话,就算有机器可以搞定,但也没有这样的存 ...



应该不是分表吧? 我想是将一个表的分数据块来存放,如一个表的2005年数据放在一个数据块,2006年数据放在另一个数据块,象很厚的书先分部分在分章,这查询时就较快;不知是否这样请教!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP