"on disk"而不是"in memory"填充 C# 数据表以避免内存溢出



我需要从两个不同的数据库中填充两个DataTable以进行一些比较和只读操作。这就需要我"select *"这两个DataTable

但是,我需要检索的表在两个数据库中都包含大约 300 万行。我在填充时得到一个OutOfMemoryException

是否有可能将这些DataTable放在磁盘上而不是内存中?您是否看到任何其他解决方案可以在如此巨大的集合上比较/执行只读?我需要做的事情使得按行子集的批次进行变得非常复杂。

我的猜测是,执行此操作的理想/有效方法是在数据库中执行此操作。 遗憾的是,您的两个表位于两个单独的数据库中,这可能会导致并发症。

这些表是在同一台服务器上的两个不同数据库中(如在 SQL Server 实例中),还是位于两个单独的服务器中? 如果它们位于同一服务器/实例中,则可以在数据库服务器上执行比较逻辑。

否则,如果这些表位于不同的服务器上,那么是否有可能在数据库之间设置某种复制,以便您可以将两个数据集放入一个数据库中,以便您可以执行比较?

按键对它们进行排序怎么样?

set1    A  A  A  B  C            E
                 |            
set2             B       D

然后你可以继续 set1,切换到 set2,回到 set1...使迭代变得更加容易。

最新更新