SQL Server内存调整

以下四条命令虽然会清除掉现有缓存,为新的缓存腾地方,但Sql server并不会因此释放

掉已经占用的内存

DBCC FREEPROCCACHE  --清除存储过程缓存
DBCC FREESESSIONCACHE  --清除回话缓存
DBCC FREESYSTEMCACHE('All')  --清除系统缓存
DBCC DROPCLEANBUFFERS  --清除所有缓存

 

注:可通过动态调整Sql Server可用的物理内存设置来强迫它释放内存。方法:打开Sql Server实例的属性面板, 找到内存设置,改变其中的最大服务器内存使用即可
 
--内存使用情况     
SELECT * FROM sys.dm_os_performance_counters 
WHERE counter_name IN ('Target Server Memory (KB)','Total Server Memory (KB)')
 
-- 内存状态 
DBCC MemoryStatus
 
--查看最小最大内存 
SELECT 
cfg.name AS [Name], 
cfg.configuration_id AS [Number], 
cfg.minimum AS [Minimum], 
cfg.maximum AS [Maximum], 
cfg.is_dynamic AS [Dynamic], 
cfg.is_advanced AS [Advanced], 
cfg.value AS [ConfigValue], 
cfg.value_in_use AS [RunValue], 
cfg.description AS [Description] 
FROM sys.configurations AS cfg
 
--设置最小最大内存
sp_configure 'show advanced options', 1
go 
sp_configure 'min server memory', 0 
RECONFIGURE 
GO
 
sp_configure 'max server memory', 2147483647 
RECONFIGURE 
GO
 
sp_configure 'max server memory', 256 
RECONFIGURE 
GO 
sp_configure 'show advanced options', 0 
 
--强制释放内存的存储过程
CREATE proc [dbo].reclaimmemory  
as
begin
DBCC FREEPROCCACHE 
DBCC FREESESSIONCACHE 
DBCC FREESYSTEMCACHE('All') 
DBCC DROPCLEANBUFFERS
 
exec sp_configure 'max server memory', 256 
EXEC ('RECONFIGURE' )
WAITFOR DELAY '00:00:05'
EXEC  sp_configure 'max server memory', 2147483647 
EXEC ('RECONFIGURE' )
GO
end

你可能感兴趣的:(SQL Server内存调整)