SQL Server上的高PF使用率

时间:2009-02-10 04:11:39

标签: sql-server-2005

我们在64位上运行SQL Server 2005。 PF使用率每周接近25 GB。在此期间,通常需要不到一秒钟运行的查询会变得非常慢。可能导致这种情况的原因是什么?

运行PerfMon后,两个计数器,总服务器内存和目标服务器内存分别显示20 GB和29 GB。处理器队列长度和磁盘队列长度为零。

2 个答案:

答案 0 :(得分:3)

听起来你没有足够的内存,服务器上有多少内存?超过您的页面文件?

也可能意味着Sql Server已“分页”,这意味着Windows决定将存储在内存中的所有信息交换到磁盘上。

打开Perfmon(转到命令提示符,然后输入perfmon)并添加这些计数器:

  • SQLServer:缓冲区管理器 - 缓冲区缓存命中率
  • SQLServer:缓冲区管理器 - 页面预期寿命
  • SQLServer:内存管理器 - 内存授予待处理

如果缓冲区高速缓存命中率是< 95%这意味着Sql正在使用磁盘而不是内存,需要更多内存。

如果您的网页预期寿命是< 500意味着SqlServer没有将结果缓存在内存中,需要更多内存。

如果您有大量内存授予待处理,则需要更多内存。

还有两个统计信息可以让您知道SqlServer需要多少内存以及实际使用多少内存。它们被称为“使用的总内存”和“请求的总内存”。如果要求>用过,猜猜看,你需要更多的记忆。

还有一些dmv可用于确定在等待内存释放时您的查询是否被阻止。我认为它的sys_dmv.os_wait_stats就是这样的。

我社区对此进行了嘲笑,所以真正的dba可以进来并清理它。不知道我头顶的统计数据。

答案 1 :(得分:1)

这是关于如何使用DMV来确定sql上的内存消耗的很好的读物:http://technet.microsoft.com/en-us/library/cc966540.aspx - 查找“内存瓶颈”部分。

一件大事是确定内存压力是SQL内部(通常是这种情况)还是外部(很少见,但可能)。例如,您的服务器可能没有任何问题,但是您的防病毒程序安装的驱动程序正在泄漏内存。

相关问题