본문 바로가기

Program/DB

SQL Server Lock Memory Release(해제) 방법

SQL Server를 운영하던 중 갑자기 Cache Memory가 감소하였고 그로 인해 Compile이 많아지면서 CPU 부하가 생긴 적이 있었다.

 

원인을 파악해보니 대량의 Lock으로 인해서 Lock Memory가 증가 하면서 Cache Memory가 감소하였던 것이다.

 

Lock Memory가 자동으로 해제가 되지 않아서 수동으로 해제를 하여 다시 Cache Memory를 확보하였다.

	
	USE master;
	GO

	-- lock 개수 확인
	SELECT	COUNT(*)
	FROM	sys.dm_tran_locks;

	-- lock memory 확인
	SELECT	*
	FROM	sys.dm_os_performance_counters
	WHERE	counter_name = N'Lock Memory (KB)';

	-- 결과로 나온 스크립트 실행
	SELECT	DISTINCT 'DBCC FREESYSTEMCACHE(''' + name + ''') WITH MARK_IN_USE_FOR_REMOVAL;'
	FROM	sys.dm_os_memory_clerks
	WHERE	name LIKE 'Lock Manager : Node%';

	-- lock memory 다시 확인
	SELECT	*
	FROM	sys.dm_os_performance_counters
	WHERE	counter_name = N'Lock Memory (KB)';