c# 处理大批量数据 时遇到 类型为“System.OutOfMemoryException”的异常

本文讲述了在C#中处理大量数据时遇到内存溢出异常的问题及解决方案。由于32位系统内存限制,作者选择通过分批加载和优化SQL查询来避免一次性加载数据到DataTable。通过在内存中分批处理数据并使用Exists关键字优化连表查询,提高处理效率。最终将处理后的数据批量插入到目标数据库,并建议将方法封装以提高复用性。
摘要由CSDN通过智能技术生成

因为业务需要在给客户处理多张表中均存在100W以上数据的时候出现如题错误

原因是在将数据装入DataTable中时所占用内存太大导致

在网上查了下原因后是因为32位软件所能使用的内存有限,本想将软件移植到64位机器上去运行,可因为软件本身所牵涉的32位系统组件过多而放弃

还是打算从软件本身的算法入手


先简单讲下软件的需求吧:总的来说就是要把客户的以前使用过的软件的oracle数据转入到现在我们的软件数据库中,现在他们不用上一家的软件了:)

而这个转换过程中会用到连表这类的操作,所以在百W级数据中进行多张表的连表操作速度是非常慢的,即使我们在数据转换过程中只需要取一次数据就可以了,但是我测算了下,在建立好所有必要的索引后,要将5、6张表的数据进行连接这个操作起码得耗上1、2个小时,当然这还必须是要安装64位的oracle,可因为我之前说过我们的软件用了太多32位系统的组件导致无法采用64位这种模式,所以同学们如果可以的话以后尽量使用64位软件吧,那速度肯定是杠杠的。


好,说完了大致的需求以及问题后,应该寻找解决方案了,为了能使得这个方案显得更加自然,我准备把我寻找该方案的过程也说明一下。

既然不能将所有数据一次性加载到DataTable中,那我们想到当

Power BI是一款用于数据分析和可视化的强大工具,但在处理大量数据或复杂计算,可能会引发一些异常,其中之一就是“System.OutOfMemoryException异常。 当我们在Power BI中加载或处理大量数据,可能会遇到内存不足的问题,导致系统无法为应用程序分配足够的内存空间,从而引发“System.OutOfMemoryException异常。 这种异常的出现通常是由以下原因引起的: 1. 数据量过大:当我们尝试加载和处理大量的数据,系统的内存可能无法容纳全部数据,导致内存不足的异常。 2. 复杂的计算:如果我们在Power BI中进行复杂的计算操作,可能会消耗大量的内存资源,从而导致内存溢出。 3. 不合理的内存管理:如果我们在Power BI中使用了不合理的内存管理方法,例如频繁地创建和销毁对象,可能会造成内存碎片和内存泄漏,最终导致内存不足异常。 为了解决这个问题,我们可以尝试以下方法: 1. 减少数据量:如果我们的数据集过大,可以考虑筛选、聚合或分段加载数据,以减少内存压力。 2. 优化计算操作:优化复杂计算的算法,减少计算量,提高计算效率,从而减少内存占用。 3. 合理管理内存:在编写Power BI代码,合理利用内存,避免不必要的内存分配和释放操作,例如使用缓存、复用对象等方法来减少内存占用。 4. 增加系统内存:如果以上方法无法解决问题,可以考虑扩大系统的内存容量,以支持更大规模的数据处理和计算操作。 总之,当我们在Power BI中遇到“System.OutOfMemoryException异常,需要仔细分析异常引发的原因,并采取相应的优化措施来解决该问题。同,合理规划和管理内存资源,以确保应用程序在处理数据量和复杂计算不会出现内存不足的异常
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值