因为业务需要在给客户处理多张表中均存在100W以上数据的时候出现如题错误
原因是在将数据装入DataTable中时所占用内存太大导致
在网上查了下原因后是因为32位软件所能使用的内存有限,本想将软件移植到64位机器上去运行,可因为软件本身所牵涉的32位系统组件过多而放弃
还是打算从软件本身的算法入手
先简单讲下软件的需求吧:总的来说就是要把客户的以前使用过的软件的oracle数据转入到现在我们的软件数据库中,现在他们不用上一家的软件了:)
而这个转换过程中会用到连表这类的操作,所以在百W级数据中进行多张表的连表操作速度是非常慢的,即使我们在数据转换过程中只需要取一次数据就可以了,但是我测算了下,在建立好所有必要的索引后,要将5、6张表的数据进行连接这个操作起码得耗上1、2个小时,当然这还必须是要安装64位的oracle,可因为我之前说过我们的软件用了太多32位系统的组件导致无法采用64位这种模式,所以同学们如果可以的话以后尽量使用64位软件吧,那速度肯定是杠杠的。
好,说完了大致的需求以及问题后,应该寻找解决方案了,为了能使得这个方案显得更加自然,我准备把我寻找该方案的过程也说明一下。
既然不能将所有数据一次性加载到DataTable中,那我们想到当