본문 바로가기
개발자 이야기/SQL

[SQL Server / MS-SQL] 서버 메모리 제한 및 권장 메모리 설정 (min / max server memory)

by - 하루살이 - 2022. 4. 4.
728x90
반응형


MSSQL 서버는 OS 에서 메모리를 요청하지 않으면 한 번 호출한 메모리를 반환하지 않고 계속 점유한다.
이에 MSSQL 을 사용하다보면 MSSQL 서버가 90% 이상 메모리를 차지하는 경우를 볼 수 있다.

 


이로 인해 다른 프로세스들이 메모리를 충분히 사용하지 못하여  시스템 성능이 떨어질 수 있으며, 서버에 과부하가 발생하여 문제가 생기기도 한다.

이를 방지하기 위해 MSSQL 에서 최대 서버 메모리 (max server memory) 를 설정하여 메모리를 제한시켜줄 수 있다.
만약, MSSQL 의 메모리 제한을 따로 하지 않았다면 최대 서버 메모리 (max server memory) 는 2,147,483,647(MB) 로 되어있다.

이는 OS 에서 메모리를 요청하지 않으면 메모리를 다 점유하겠다란 말과 비슷하다.

따라서 최대 서버 메모리를 설정하여 메모리를 제한해야한다.

물리적 메모리에 따른 권장 메모리 설정 값이 아래와 같다.

 

Physical RAM (GB) Max server memory (MB)
2 1500
4 3200
6 4800
8 6400
12 10000
16 13500
24 21500
32 29000
48 44000
64 60000
72 68000
96 92000
128 124000

 

1. MSSQL 서버의 min/max server memory 확인


[T-SQL]

1
2
3
SELECT value,  minimum, maximum  
FROM sys.configurations   
WHERE name in ('min server memory (MB)','max server memory (MB)')
cs

 

 

value 는 설정되어 있는 min server memory/max server memory 의 값이며,

minimum/maximum 은 해당 메모리를 설정할 수 있는 최소값/최대값이다.

* max server memory 은 최소 128 (MB) 이상이여야 한다.

 

[SSMS]

(1) 개체 탐색기(Object Explorer) 선택 > 서버 선택 (마우스 우클릭) >속성(Properties) 선택

 

(2) 메모리(Memory) 선택 > 최소/최대 서버 메모리(Minimum/Maximum server memory) 확인 

 

나 역시 최대 서버 메모리를 설정한 적이 없어 기본 값이 2147483647MB 로 지정되어있다.

나의 PC 는 물리적 메모리가 16GB 이므로 13500MB 로 바꾸어줄 예정이다. 

2. Min/Max server memory 설정


[T-SQL]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
--Show advanced options 활성화 
EXEC SP_CONFIGURE 'SHOW ADVANCED OPTIONS'1 
--재시작하지 않고 즉시 적용 
RECONFIGURE WITH OVERRIDE 
GO 
--메모리정보 확인 
EXEC SP_CONFIGURE 
GO 
 
--Min server memory 를 0 (MB) 로 설정 
EXEC SP_CONFIGURE 'MIN SERVER MEMORY (MB)'0 
RECONFIGURE WITH OVERRIDE 
GO 
 
--Max server memory 를 13500 (MB) 로 설정 
EXEC SP_CONFIGURE 'MAX SERVER MEMORY (MB)'13500 
RECONFIGURE WITH OVERRIDE 
GO 
 
--Show advanced options 비활성화 
EXEC SP_CONFIGURE 'SHOW ADVANCED OPTIONS'0 
RECONFIGURE WITH OVERRIDE 
GO 
-- 메모리정보 확인 
EXEC SP_CONFIGURE 
GO
cs

[SSMS]

(1) Maximum server memory (in MB) 13500 으로 변경 > OK 선택

이와 같이 변경을 해주고 기다리면 메모리가 사용에 따라 서서히 반환된다. 

 

 

 

필요에 따라 최소 서버 메모리 (Minimum server memory) 를 최대 서버 메모리 (Maximum server memory) 와 동일하게 설정하여 메모리의 가용성 변동을 없앨 수도 있다.

반드시 Min/Max 메모리 값을 설정해주자!

728x90
반응형

댓글