sqlsrvr.exe消耗大量内存

时间:2011-08-22 13:46:06

标签: sql-server-2000

我有一个在Windows XP和SQL Server 2000 Service Pack 3上运行的.NET 1.1应用程序。该应用程序使用Enterprise Library Data&异常处理dll。

当我提交一个调用一些存储过程和表格的表格时最后在表中执行INSERT,sqlsrvr.exe进程持续增加到300-500 MB。表单执行时间超过10分钟。

正常情况下的同一页面,执行时间不超过1分钟。

这里可能会发生什么,以及如何解决?

2 个答案:

答案 0 :(得分:6)

消耗大量内存的Sql Server进程是正常的。 SQL Server将占用大量内存,但会在操作系统内存压力下恢复(基于SQL服务器配置的最小和最大内存设置)

如果查询速度很慢,请查看SQL查询和/或缺少索引。

您描述的症状听起来可能是由参数嗅探引起的。确保您的统计信息和索引是最新的,并可能发布您的查询。

答案 1 :(得分:0)

  

sqlsrvr.exe进程持续增加到300-500MB。

好的,这里的休息在哪里?我有一个16GB的SQL服务器;)

SQL Server,除非在CNOFIGURATION中另外出现,否则将尽可能多地缓存。它读取的每页(8kb)都保留在记忆中。光盘很慢。 ram很快。它假设它是一个服务器,因此可以使用内存。

  

表单执行的时间超过10分钟。

嗯,让我们看看。

  • 糟糕的编程(缺少索引?)
  • 内存不足;)是的,SQL Server会说你最多500mb - 是一个128Mb的VM还是什么?
  • 不合适的光盘子系统。 SQL Server在DISC IOPS中非常有趣 - 不是mb / s而是IOPS。我现在用10张光盘运行我的服务器,它想要更多。

我非常强烈地指出1(缺少索引)或2(糟糕的硬件)。不要把它当作个人,但你整个设置的声音真的已经过时了,你真的不喜欢你处于最佳状态,所以这只是一个没有过去经验的野外拍摄。

我在这个领域最残酷的是一个零索引的人和一个执行30个查询的网页,所有这些都导致了表格扫描,并覆盖了糟糕的普通廉价光盘,因此计算机在半小时内没有响应。

开始:

  • 检查性能coutners,主要是基于光盘的。这给了你一个提示。
  • 确保您正确的指数。通过检查使用探查器执行的查询来进行修改。由于缺少索引,可能会触发重要的低效操作。
  • 如果不是这样,请检查等待统计 - 锁定也可能是罪魁祸首。

很难说任何事情除了 - 好 - 你没有提供足够的信息。

我见过这样的陈述:

  

当我提交一个调用一些存储过程和表格的表格时最后在表中执行INSERT

在12层级联存储过程中爆炸成大量低效操作。

那说,如果是硬件 - 升级到SSD。一个120GB的SSD现在非常便宜而且速度非常快。我现在使用Velociraptors 3进行一些操作,并且可以达到60.000 IPS - 而更高端的光盘可以达到400。