서버 오류 메세지.
WARNING: Failed to reserve contiguous memory of Size= 65536
MemToLeave 의 메모리 량이 부족해서 나타나는 오류 입니다.
시작 옵션에서 -g 를 하고 사이즈를 입력해주시기 바랍니다.
** 참고 자료 입니다.
메모리 영역의 구성
1. Buffer pool : SQL Server의 기본 데이터 저장소
2. MemToLeave : BPool에서 사용하지 않는 SQL Server의 유저 영역 메모리
3. AWE memory : AWE를 활성화 할 경우 사용할 수 있는 BPool의 확장 및 데이터와 인덱스의 케싱을 위해 사용되는 데이터 공간
MemToLeave
기본적으로 MemToLeave 영역은 384MB의 크기를 갖는다. 이중 128MB는 Worker thread stacks 을 위해 예약 되며
, (max worker threads = 255 * 0.5M) 나머지 256MB 는 BPool 외의 공간을 위해 예약된다.
예를 들어 MemToLeave는 OLE DB Provider (Linked Server를 이용하는 경우)및 in process COM object 및 8Kb 이상의 크기를
갖는 서버 코드 등이 사용하게 됩니다. (켄 핸더슨 2003년)
특히 2005 버전 부터는 CTE나 CLR 등이 해당 메모리를 사용하게 됩니다.
MemToLeave Size 조절 : 시작 옵션에서 –g 옵션을 주고 사이즈를 기입 (Ex –g 1024)
*/
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 AS [총 Memtoleave] ,CAST(MAX(Size) AS BIGINT)/1024 AS [잔여 Memtoleave]
FROM VASummary
--WHERE Free <> 0
[출처] SQL MemToLeave 메모리 체크|작성자 webman21