이것에 대한 귀하의 의견을 부탁드립니다. 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에는 그 한계를 넘어 메모리를 소비 할 수있는 다른 많은 것들이 있습니다. 여기에는 다음이 포함되지만 이에 국한되지는 않습니다.
- 데이터베이스 메일
- 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 : 버퍼 관리자 : 데이터베이스 페이지