SQL Server 低于 5000 个可用页面

iva*_*nmp 5 sql-server-2005 sql-server memory

我在生产中的两个 SQL Server 2005 实例上设置了警报。只要Free Pages性能计数器低于 5000 页标记,就会发送这些警报之一。

两台服务器通常都有超过 300000 个空闲页面,但有时其中一台服务器会暂时远远低于 2000 甚至 1000 个空闲页面,然后再次上升。同样,这只发生在其中一台服务器上。

据我所知,这种行为不会降低该服务器的性能,因为在我看来,每当服务器在空闲页面上耗尽时,它都会从缓冲区中释放旧数据页面并填充空闲缓冲区列表. 至少从理论上讲。

我不明白的是,为什么惰性写入器没有维护更大的空闲缓冲区列表,而是“等待”SQL Server 在释放更多缓冲区之前在空闲页面上变得如此短缺。

所以我的问题实际上是双重的:
1. 我如何确定是什么/谁导致 SQL Server 空闲页面不足?
2.如何检查什么是真正回事?

Rem*_*anu 5

那么空闲列表缩小会发生什么?对于大多数用途,您可以考虑公式free = total - (max(database, reserved)+stolen)。因此,只需收集SQL Server、Buffer Manager Object中的所有计数器,然后查看模式是什么:

  • total保持不变,但stolen有所增长。这表明来自代码和缓存的一些内存消耗。并且通常不会自行愈合。您可以通过检查内存管理员来对此进行调查,请参阅如何使用 DBCC MEMORYSTATUS 命令来监视内存使用情况。对于快速消失的被盗数量突然激增的一个可能解释是复杂的查询编译。收集SQL Server、内存管理器对象以获取更多信息,请查看Optimizer Memory.
  • databasereservedstolen保持不变,但total缩小。让我们考虑一下,因为它不会发生。如果你看到这个,在这里发布,我们可以进一步消化。
  • total保持不变,database成长。可能是在一张大桌子上扫描。寻找大的查询logical_readssys.dm_exec_query_stats
  • total保持不变,reserved成长。指示具有大内存授予请求的查询。收集SQL Server、内存管理器对象以获取更多信息,请查看Memory Grants Outstanding.