我在生产站点中安装了SQL Server 2008,为其分配的最大内存是32 GB RAM中的28 GB。 但是有时候,我发现SQL Server使用了超过29GB的内存,这是不对的。 有没有我应该采取的纠正措施或做一些清理?
最大服务器内存设置仅控制缓冲池的大小。 SQL Server可能并将分配比28GB设置更多的内存,因为它自己使用与缓冲池无关的使用者。 在进程内部加载的组件(DLL)也将消耗内存。 还有多less取决于使用模式,它可能只有几MB,或者可能是更多的GB(例如抛出几个XP或sp_OA调用,内存将全部失效)。
您的纠正措施应该是调查额外的内存消耗。 sys.dm_os_memory_clerks在这里是你的朋友,另请参阅如何使用DBCC MEMORYSTATUS命令监视SQL Server上的内存使用情况 。 某些内存使用者无法从SQL Server DMV和计数器(例如,由加载的DLL分配的内存,如COM组件)进行调查。