我在生产站点安装了 SQL Server 2008,分配给它的最大内存是总内存 32 GB 中的 28 GB。但有时,我发现 SQL Server 使用的内存超过 29GB,这是不应该的。我应该采取什么纠正措施或进行一些清理吗?
答案1
最大服务器内存设置仅控制缓冲池的大小。SQL Server 可能会分配超过 28GB 设置的内存,供与缓冲池无关的消费者使用。进程内加载的组件 (DLL) 也会消耗内存。具体多多少取决于使用模式,可能多几 MB,也可能多几 GB(例如,投入几个 XP 或 sp_OA 调用,内存就会完全失控)。
您的纠正措施应该是调查额外的内存消耗。sys.dm_os_memory_clerks
你的朋友在这里吗,另请参阅如何使用 DBCC MEMORYSTATUS 命令监视 SQL Server 上的内存使用情况. 某些内存消耗者无法从 SQL Server DMV 和计数器进行调查(例如,由加载的 DLL 分配的内存,如 COM 组件)。