RAM 사용을 제한하지 않는 SQL Server Max Memory


18

이것에 대한 귀하의 의견을 부탁드립니다. SQL Server 2008r2 Ent가 있습니다. 에드 16 개의 코어와 64GB RAM의 64 비트 20111014부터 완전히 패치 된 SQL Server 인스턴스가 하나 있습니다.

최대 램은 60000MB로 설정되어 있습니다. 온라인 며칠 후 작업 관리자에 따르면 무료 램의 양은 0입니다.

최대 램을 53GB 미만으로 변경하면 며칠 후에 안정화되고 여유 램이 생깁니다.

작업 관리자에 따라 램을 할당하는 것은 SQL 프로세스입니다. 문제가 실제로 무엇인지 어떻게 알 수 있습니까? 내가 이미 많은 테스트를 수행했지만 아직이 문제를 해결하지 못했습니다. 그리고 사용 가능한 램이 0이 될 때 일반적인 메모리 부족 현상이 발생하지 않습니다.

업데이트 1 :

이 페이지 /dba//a/7062/2744의 RAM과 관련된 다른 Q / A에서 영감을 얻었습니다 . 이 두 가지를 사용하여 RAM이 무엇을 사용하고 있는지 확인했습니다.

SELECT TOP ( 10 )
        [type] AS [Memory Clerk Type] ,
        SUM(single_pages_kb) AS [SPA Mem, Kb]
FROM    sys.dm_os_memory_clerks
GROUP BY [type]
ORDER BY SUM(single_pages_kb) DESC
OPTION  ( RECOMPILE ) ;

SELECT  DB_NAME(database_id) AS [Database Name] ,
        COUNT(*) * 8 / 1024.0 AS [Cached Size (MB)]
FROM    sys.dm_os_buffer_descriptors
--WHERE   database_id > 4 -- system databases
--        AND database_id <> 32767 -- ResourceDB
GROUP BY DB_NAME(database_id)
ORDER BY [Cached Size (MB)] DESC
OPTION  ( RECOMPILE ) ;

이것에 의해 사용 된 양은 먼저 SQL Server에서 사용하는 총 약 52GB 인 7948432 Kb 두 번째 44030,57812MB입니다. 그래서 나머지 RAM은 어디로 갔습니까? :-) 작업 관리자가 지금 캐시 된 363, 사용 가능한 401, 무료 40 및 sqlservr.exe에 메모리 개인 설정 64 459 656이 있습니다. 최대 Ram은 이전과 같이 60000MB로 설정되었습니다.

답변:


20

SQL Server의 최대 메모리 설정은 버퍼 풀 사용 제한을 정의합니다. 이 한계를 초과하여 가변적이지만 상당한 할당이 필요합니다.

조나단 Kehayias의 , 기독교 볼튼존 삼손은 주제에 대한 수준 300/400 게시물이 있습니다. 브렌트 오자르 (Brent Ozar) 는 시작하기에 더 좋은 기사를 더 쉽게 읽을 수 있습니다.

관련 : SQL Server 2008 R2“고스트 메모리”


예, 버퍼 풀만 제한한다는 데 동의합니다. 내가 살펴볼 북마크에 감사합니다.
Martin Sjöberg

나는 그 링크를 읽고 있으며 거기에는 좋은 것들이 있습니다. 내가 찾은 내용으로 질문을 업데이트합니다. 나는 또한 Max Pizzeria 번호를 쉽게 구할 수 있다는 것을 다시 생각합니다.
Martin Sjöberg

16

상기 버퍼 풀 및 프로 시저 캐시는 최대 서버 메모리에 의해 제어되는 것들에 관한 것이다. SQL Server에는 그 한계를 넘어 메모리를 소비 할 수있는 다른 많은 것들이 있습니다. 여기에는 다음이 포함되지만 이에 국한되지는 않습니다.

  • 데이터베이스 메일
  • SQLCLR
  • 확장 저장 프로 시저
  • 그들 자신이 바이너리
  • SQL 메일
  • SSIS
  • SSAS
  • SSRS

위에서 언급 한 것 중이 서버에서 바이너리 ofc와 ssis를 사용합니다.
마틴

1
다른 소프트웨어는 서버에 설치되어 있습니까? 그리고 나는 무엇이든 의미합니다. MPIO 드라이버, 플래시 드라이브 드라이버, 백업 소프트웨어, 바이러스 백신, 시스템 내부 등
mrdenny

서버는 꽤 깨끗하고 새로 설치되었지만 대부분 거기에 있습니다. 이번 주 말에 전체 목록을 작성하려고합니다. 짧고 내 기억에서 ... 우리는 iodrive (델), 맥아피, 바탕 화면, iometer와, treesize에 processexplorer ...해야합니까
마틴 베르그

1
FusionIO 드라이버에는 많은 메모리가 필요합니다. 아마 많이 걸릴 것입니다.
mrdenny

이것을 증명할 수 있습니까? 또는 더 적은 RAM을 사용하도록 구성 하시겠습니까? 지금까지는 RAM을 릴리스하는 것처럼 보였으며 단점을 발견하지 못했지만 RAM 사용으로 인해 발생할 수있는 문제에 대해 ssis 패키지의 양을 늘려야하는 경우를 대비하여.
Martin Sjöberg


2

http://msdn.microsoft.com/en-us/library/ms178067.aspx

최대 서버 메모리를 줄이려면 메모리를 해제하기 위해 SQL Server를 다시 시작해야 할 수 있습니다.

버퍼 풀의 페이지가 디스크에 기록되지 않은 경우 페이지가 풀릴 때까지 해제되지 않습니다.

최대 메모리 설정을 낮추면 SQL Server가 더티 페이지를 플러시합니까?

그는 perfmon에서 버퍼 관리자를 모니터하여이를 확인할 수 있습니다. Perfmon-> SQLServer : 버퍼 관리자 : 데이터베이스 페이지


"SQL Server를 다시 시작해야 할 수도 있습니다. 항상 필요한 것은 아닙니다. 재시작이 필요하거나 메모리를 해제 할 필요가없는 조건을 알고 있습니까?
Nick Chammas

이 세부 정보를 기존 답변으로 편집하고 삭제합니다. 아마 mrdenny는 더티 페이지 플러싱에 대한 질문에 대답 할 수 있습니다.
Nick Chammas

1
맞습니다. SQL은 메모리 페이지가 더티 (쓰기) 상태 일 때 해제 할 수 없습니다. 시스템이 검사 점을 점검 할 때마다 더티 페이지가 디스크에 기록됩니다. 최대 서버 메모리를 변경하면 체크 포인트가 발생한다고 생각하지 않습니다.
mrdenny

1
메모리 설정을 변경하기 위해 인스턴스를 다시 시작하는 것은 큰 실수 일 수 있습니다. 메모리 설정을 변경해도 CHECKPOINT데이터베이스에서 작업 이 수행되지는 않지만 프로 시저 캐시가 플러시됩니다. 메모리 설정을 변경하기 위해 인스턴스를 다시 시작하면 프로 시저 캐시가 차가울뿐만 아니라 데이터 캐시도 차가워집니다. 메모리의 더티 페이지로 인해 최대 메모리를 줄일 수없는 CHECKPOINT경우 데이터베이스 에서 명령을 실행 하여 더티 페이지를 디스크로 플러시 한 다음 인스턴스 다시 시작 하지 않고 피크 가 아닌 시간에 메모리 설정을 변경하십시오 .
Jon Seigel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.