0

我正在使用以下模式使用 Linq to SQL 更新我的 SQL Server 记录:

    List<int> allIds;

    using (MyDataContext dc= new MyDataContext())
    {
        dc.CommandTimeout = 0;
        allIds = dc.MyTables.Select(x => x.Id).ToList();
    }

    Parallel.ForEach(allIds, x => ComputeAndSave(x));

    ComputeAndSave(int x, MyDataContext dc)
    {
       var myRecord= dc.MyTables.Select(x => x).Where(x => x.Id == id).FirstOrDefault();
       myRecord.Total = myRecord.Total + 1; //some modification(s)
       dc.SubmitChanges();
    }

我在应用程序的多个部分使用相同的模式来更新某些表中的所有行。并且在所有这些情况下,SQL Server 使用的内存都会慢慢增加、增加和增加。我发现释放所有内存的唯一方法是停止并重新启动 SQL Server 服务。为什么这里有内存泄漏,如何解决?

非常感谢!

4

1 回答 1

3

SQL Server应该占用所有可用内存。它应该在无头服务器上运行。

在 SSMS 中,打开服务器属性并设置合理的最大服务器内存量。

于 2012-06-26T17:17:29.733 回答