主题:sqlservr.exe 进程的内存利用率过高。
当我查看任务管理器-->进程或使用 perfmon 内存计数器(Sqlserver:内存管理器:目标服务器内存和总服务器内存)时,我发现 sqlservr.exe 进程的内存利用率很高,接近 8 GB(目标服务器内存计数器)和 7.95 GB(总服务器内存)。
当我重新启动 MSSQLSERVER 服务时,它又会再次猛增到相同的大小。我经常遇到这个问题。
请帮我找出为什么 SQL Server 使用了这么多内存,以及如何找出哪个查询、存储过程等导致 SQL Server 使用了这么多内存。
*** 我的代码中没有使用任何触发器或游标。
谢谢
答案1
根据我的经验,SQL Server 将尝试预先分配尽可能多的内存,因为它的性能高度依赖内存。我们的 SQL Server 机器通常需要大约一周的时间才能为 SQL Server 进程获得高达 32GB 的 RAM 占用空间。
答案2
设置 SQL 服务器时,首先要采取的步骤之一就是设置 SQL 内存限制。这里有一份很棒的指南这个博客。对于 8GB 服务器,建议将 MaxServerMem 设置为 6400MB,这样可以为操作系统和其他操作留出 1.5GB。操作系统将始终显示 SQL 服务器进程正在使用分配给它的所有内存,如果您不设置限制,SQL 将尝试使用系统上的所有内存,这可能会导致页面加载并降低性能,因此请使用限制来阻止这种情况发生。
有关 SQL 服务器设置的另一个很好的参考资料可以在以下网址找到BrentOzar.com,指导您设置一些基本参数,以便充分利用您的 SQL 服务器。