gpt4 book ai didi

sql-server - 如何强制 SQL Server 释放内存?

转载 作者:IT王子 更新时间:2023-10-28 23:30:27 28 4
gpt4 key购买 nike

What's a good way of checking how much (actual) memory is currently being used vs. how much is SQL Server allocated to itself?

我一直在诉诸 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 的 ma​​x server memory 并再次增加它以强制 SQL Server 释放未使用但已分配的内存。然而,这种方法的一个问题是我们无法确定将 最大服务器内存 减少多少,因此冒着杀死 SQL Server 的风险。这就是为什么在减少 最大服务器内存 值之前了解 SQL Server 的“实际”使用量很重要。

最佳答案

以下修改后的脚本对我有用。我需要临时释放 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

关于sql-server - 如何强制 SQL Server 释放内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38998909/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com