안녕하세요 여기서 도움을 많이 받고 있습니다.
현재 서버 정보는 아래와 같고요
===============================================
OS : Windows 2008 sp2
DB : SQL Server 2008 R2
CPU : Intel(R) Xeon(R) CPU E5504 @ 2.0GHZ
메모리 : 4 GB
===============================================
다름이 아니라
서버가 어느순간 부터 느려지는 현상이 발생하여 해결 방안을 찾아보던 중에...
DB메모리 max설정을 해주면 된다는 내용을 보고 글렌베리 표를 참고하여 메모리 설정을 했습니다.
Physical RAM | MaxServerMem setting |
2GB | 1500 |
4GB | 3200 |
6GB | 4800 |
8GB | 6400 |
12GB | 10000 |
해당 메모리 까지 차게되면 DB메모리 반환을 한다고 하는데요
여기서 제가 궁금한 사항은
아래에 시스템메모리 가 3.2GB 차면 메모리 반환을 하는것인지?
아니면 아래처럼 sqlserver.exe 프로세스 메모리가 3200 이 되면 자동으로 메모리 반환을 하는것인지
헷갈려서 문의를 드려봅니다.
Comment 1
-
쓸만한게없네(윤선식)
2013.09.28 01:42
Min Server Memory / Max Server Memory 에 대한 이해력을 높이시면 자연스럽게 알게 되실 듯 한데요.
우선, 아래 테크넷 문서를 참고하세요.
http://technet.microsoft.com/ko-kr/library/ms178067(v=sql.105).aspx
max server memory를 사용하면 SQL Server 버퍼 풀이 지정된 양 이상의 메모리를 사용하지 못하게 되므로 나머지 메모리를 다른 응용 프로그램을 빨리 시작하는 데 사용할 수 있습니다. SQL Server는 시작할 때 max server memory에서 지정된 메모리를 즉시 할당하지 않습니다. 메모리 사용은 SQL Server에서 필요한 만큼 max server memory에 지정된 값에 도달할 때까지 증가됩니다. SQL Server에서는 max server memory 값을 늘리기 전에는 이 메모리 사용량을 초과할 수 없습니다.
SQL Server에서는 min server memory에 지정된 메모리 양을 할당하는 것은 보장하지 않습니다. 서버의 로드 때문에 min server memory에 지정된 메모리 양을 할당할 필요가 없는 경우 SQL Server는 보다 적은 메모리로 실행됩니다.
아래 내용을 참고하시면 되겠습니다.
http://www.sqlleader.com/mboard.asp?exec=view&strBoardID=SS2005Admin&intSeq=58
그런데 SQL Server 는 실제로는 ‘max server memory’ 옵션이 지정한 것 보다 더 많은 메모리를 확보합니다. 일반적으로 버퍼 풀에 할당된 메모리가 SQL Server 에서 사용하는 메모리의 가장 큰 부분을 차지합니다만, 버퍼 풀 외에 SQL Server가 내부 및 외부 구성 요소를 위하여 버퍼 풀 외부에도 메모리를 할당합니다. SQL Server Total Server Memory에는 버퍼 풀만 포함이 됩니다. 예를 들어, Thread Memory나 CLR Memory 등은 Total Server Memory에 포함되지 않습니다.
이것은 SQL Server 2008 R2 까지 해당되는 내용으로 SQL Server 2012 부터는 버퍼풀 이외 CLR과 같은 영역도 Max Server Memory 안에 포함됩니다. (아래 sqlblog.com 그림 참조. 원문 : http://sqlblog.com/blogs/sqlos_team/archive/2012/07/12/memory-manager-configuration-changes-in-sql-server-2012.aspx)