RAM 사용을 제한하지 않는 SQL Server Max Memory 생깁니다. 작업 관리자에 따라

이것에 대한 귀하의 의견을 부탁드립니다. 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로 설정되었습니다.



답변

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

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

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


답변

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

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

답변

SQL 2012부터는 해당 DMV에서 single_pages_kb가 pages_kb로 대체되었습니다. https://msdn.microsoft.com/en-us/library/ms175019.aspx?f=255&MSPPError=-2147217396

따라서 2012+ 서버에서 질문에 포함 된 쿼리를 실행하려면 single_ 문자열을 제거하십시오.


답변

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

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

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

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

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