6,129
社区成员
发帖
与我相关
我的任务
分享
DECLARE @Memory DECIMAL(18,2)
/* --计算缓冲池占用内存
SELECT
@Memory=COUNT(row_count)*8.0/1024.0
FROM sys.dm_os_buffer_descriptors
*/
--也可用进程占用内存
SELECT @Memory=physical_memory_in_use_kb/1024 FROM sys.dm_os_process_memory WITH (NOLOCK) OPTION (RECOMPILE);
IF @Memory>102400 --100G时释放内存
BEGIN
DBCC FREEPROCCACHE --删除计划缓存中的所有元素
DBCC FREESESSIONCACHE --刷新针对 Microsoft SQL Server 实例执行的分布式查询所使用的分布式查询连接缓存
DBCC FREESYSTEMCACHE('All')with MARK_IN_USE_FOR_REMOVAL --从所有缓存中释放所有未使用的缓存条目
CHECKPOINT --将当前数据库的全部脏页写入磁盘
DBCC DROPCLEANBUFFERS --从缓冲池中删除所有清除缓冲区
EXEC sp_configure 'show advanced options', 1;
EXEC sys.sp_configure N'max server memory (MB)', '102400' --设置最大值为100G
WAITFOR DELAY '00:00:05'
EXEC sys.sp_configure N'max server memory (MB)', '2147483647'--设置为无限制
RECONFIGURE WITH OVERRIDE
END
GO