我在限制Windows Server 2008服务器上的SQL Server 2008的内存使用情况时遇到了问题。 系统有11GB内存,我试图通过设置“最大服务器内存(以MB为单位)”将内存使用限制在8.5GB,但是仍然使用超过9.5GB的内存(即使在重启后)。
任何想法如何正确地限制它?
谢谢你的时间
这些设置仅适用于缓冲池。 SQL Server也从这个区域之外分配内存。 请参阅以下摘自SQL Server联机丛书
SQL Server作为一个进程获取比max server memory选项指定的更多的内存。 内部和外部组件都可以在缓冲池之外分配内存,这消耗了额外的内存,但是分配给缓冲池的内存通常代表了SQL Server占用的内存的最大部分。
要进一步阅读,请参阅: SQL Server内存选项
“最大内存”设置并不包括SQL Server所做的所有事情,而只包括缓冲池,我将其简单地描述为内存中而不是磁盘上的数据。
从BOL :
“作为一个进程的SQL Server获取的内存比max server memory选项指定的要多,内部和外部组件都可以在缓冲池之外分配内存,这消耗了额外的内存,但是分配给缓冲池的内存通常代表内存消耗的SQL Server“。
我认为约翰在这笔钱上是正确的。 使用Max服务器内存,只能控制数据caching/缓冲池区域。 SQL Server仍然将内存用于扩展过程,OLE自动化调用,链接服务器,OLEDB提供程序,SQL CLR等其他区域,也用于大于8 KB(> 8 KB)的分配,也称为多页分配。
Jonathan Kehayias有几个优秀的职位来理解这些领域,当你有机会的时候你可能会想赶上这些。
你如何衡量内存使用? 性能监视器计数器 SQL工具中的显示? 任务pipe理器?
这可能是你正在看的阅读不是专门显示你想限制的内存池。 如果你告诉我们你从哪里读取,你希望得到一个更具体的答案。