#title MemToLeave 영역에 대한 메모 MemToLeave Memory To Leave (남겨둘 메모리쯤?)의 약어로 사용되었고, 2000까지 주로 사용되던 용어. 뭘 남겨두냐면, SQL이 구동하면서 메모리 예약 시, 가용한 메모리를 전부 Buffer Pool로 예약하지 않고, 다른 처리를 위해 256MB(default)를 빼고, Threads를 관리할 메모리 영역(512KB * Max Thread수)도 빼서 32bit에서 default라면, 256+128= 384MB 만큼 남겨두고 BPool을 예약함. (thread관리 영역은 32bit에선 0.5M, 64bit에선 2MB로 기억함) 남겨진다 해서 찌꺼기 뉘앙스가 있지만 실제로 하는 역할을 보면 매우 중요해서, BPool엔 데이터와 인덱스가 할당되고 MemToLeave에는 8KB이상의 데이터와 일부 클라이언트 연결시 패킷 버퍼를 여기에도 할당함. (client 연결시 패킷 버퍼는, 기본 네트워크 버퍼 크기에 따라서 8KB보다 작으면 BPool에, 이 수치보다 크면 MemToLeave에 3개를 할당함. 입력2, 출력1) COM관련 저장도 이곳에 Linked Server 관련 저장소도 이곳을 함. 2005이후에는 이런 찌꺼기스러운 이미지를 탈피하려했는지, Multi Page Allocator란 단어로 사용하는 추세. Single Page Allocator가 BPool로, Multi Page Allocator를 MemToLeave로 이해하면 큰 무리 없을 듯 --윤주형 http://blog.naver.com/webman21/10050287502 {{{ ;With VASummary(Size,Reserved,Free) AS (SELECT Size = VaDump.Size, Reserved = SUM(CASE(CONVERT(INT, VaDump.Base)^0) WHEN 0 THEN 0 ELSE 1 END), Free = SUM(CASE(CONVERT(INT, VaDump.Base)^0) WHEN 0 THEN 1 ELSE 0 END) FROM ( SELECT CONVERT(VARBINARY, SUM(region_size_in_bytes)) AS Size, region_allocation_base_address AS Base FROM sys.dm_os_virtual_address_dump WHERE region_allocation_base_address <> 0x0 GROUP BY region_allocation_base_address UNION SELECT CONVERT(VARBINARY, region_size_in_bytes), region_allocation_base_address FROM sys.dm_os_virtual_address_dump WHERE region_allocation_base_address = 0x0 ) AS VaDump GROUP BY Size) SELECT SUM(CONVERT(BIGINT,Size)*Free)/1024/1024/1024 AS [총MemToLeave, GB] ,CAST(MAX(Size) AS BIGINT)/1024/1024/1024 AS [잔여MemToLeave, GB] FROM VASummary WHERE Free <> 0 }}} ==== 참고자료 ==== * [http://blogs.msdn.com/psssql/archive/2009/06/05/sql-server-and-large-pages-explained.aspx SQL Server and Large Pages Explained] * http://www.sqlskills.com/BLOGS/PAUL/post/Memory-Large-Pages-and-MemToLeave.aspx