Tig*_*z32 16 memory windows sql-server
检查当前正在使用多少(实际)内存与SQL Server分配给自身的数量的好方法是什么?
我一直在使用memory_utilization_百分比,但在运行以下内容后释放内存似乎没有改变.
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;
Run Code Online (Sandbox Code Playgroud)
解决方案是删除SQL Server的最大服务器内存并再次增加它以强制SQL Server释放未使用但已分配的内存.但是,这种方法的一个问题是我们无法确定减少最大服务器内存的距离,因此存在查杀SQL Server的风险.这就是为什么在减少max server memory的值之前了解SQL Server"实际"使用了多少很重要的原因.
Num*_*low 11
下面修改后的脚本对我有用。我需要暂时释放 SQLServer 持有的一堆 RAM,以便我们可以在同一台服务器上运行其他一些一次性进程。它暂时释放 SQL 的保留内存空间,同时仍允许它根据需要吞噬内存。
我添加了一个内置等待,让 SQLServer 在将内存恢复到原始级别之前实际释放内存。显然,根据需要调整值以满足您的需要。
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
/*** Drop the max down to 64GB temporarily ***/
sp_configure 'max server memory', 65536; --64GB
GO
RECONFIGURE;
GO
/**** Wait a couple minutes to let SQLServer to naturally release the RAM..... ****/
WAITFOR DELAY '00:02:00';
GO
/** now bump it back up to "lots of RAM"! ****/
sp_configure 'max server memory', 215040; --210 GB
GO
RECONFIGURE;
GO
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14840 次 |
| 最近记录: |