如何检查当前实际使用了多少内存,以及SQL Server分配给自身的内存量?
我一直在使用memory_utilization_percentage,但在运行以下代码释放内存后,它似乎没有改变。
SELECT [Memory_usedby_Sqlserver_MB] = ( physical_memory_in_use_kb / 1024 ) ,
[Memory_utilization_percentage] = memory_utilization_percentage
FROM sys.dm_os_process_memory;
DBCC FREESYSTEMCACHE ('ALL')
DBCC FREESESSIONCACHE
DBCC FREEPROCCACHE
SELECT [Memory_usedby_Sqlserver_MB] = ( physical_memory_in_use_kb / 1024 ) ,
[Memory_utilization_percentage] = memory_utilization_percentage
FROM sys.dm_os_process_memory;
一个解决办法是将 SQL Server 的最大服务器内存降低,然后再增加它以强制 SQL Server 释放未使用但已分配的内存。但是这种方法的问题在于我们无法确定需要减少多少最大服务器内存,因此存在杀死 SQL Server 的风险。这就是为什么在减少最大服务器内存的值之前,了解 SQL Server 实际使用量的重要性。