我正在使用一个表中有近800万条记录的数据库。我知道这是海量数据,不应一次加载所有数据。但是,对于我的项目而言,将所有这些记录加载到驻留在内存中的数据集很重要。
当我尝试使用以下代码填充数据集中的数据表时:
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
foreach (Component component in EnumerateComponents())
{
string name = component.GetType().Name;
if (name.Contains("baghadadpTableAdapter"))
{
string TableName = name.Substring(0, name.IndexOf("TableAdapter"));
baghadadpTableAdapter1.Fill(ds1.persons);
}
}
stopwatch.Stop();
TimeSpan time = stopwatch.Elapsed;
在“ baghadadpTableAdapter1.Fill(ds1.persons);”行中发生以下错误:
System.OutOfMemoryException: 'Exception of type 'System.OutOfMemoryException' was thrown.'
如何解决此问题,同时将所有这些巨大数据加载到ds1中的数据表人员
答案 0 :(得分:3)
您可以:
最终,您将需要考虑如何按块处理记录。我不知道您的应用程序如何工作,但是当应用程序需要对800万个对象进行超快速访问时,我还没有遇到这种情况。
答案 1 :(得分:1)
DataTable
众所周知对于大型设备不利。我已经看到使用6-7次 内存的表与原始数据一样多。
如果您真的需要在内存中存储那么多数据,则可以考虑更改为List
域对象而不是DataTable
。但是我也挑战“需要”在内存中存储数百万或记录。
答案 2 :(得分:0)
我只是分页数据集。您可以研究几种不同的方法。