Bob Dorr에서 SQL Server 2012의 Max 서버 메모리가 제어하는 내용에 대한 정의를 얻었습니다. 온라인 설명서 를 읽을 수도 있습니다 자세한 내용은
최대 서버 메모리는 버퍼 풀, 컴파일 메모리, 모든 캐시, qe 메모리 부여, 잠금 관리자 메모리 및 CLR 메모리 (기본적으로 dm_os_memory_clerks에있는“클라크”)를 포함하여 SQL Server 메모리 할당을 제어합니다. 스레드 스택, 메모리 힙, SQL Server 이외의 연결된 서버 공급자 또는 "비 SQL Server"DLL에 의해 할당 된 메모리에 대한 메모리는 max server memory에 의해 제어되지 않습니다.
스레드 스택, 타사 DLL, Microsoft의 MySQL 이외의 링크 된 서버 공급자 (MySQL.PostgreSQL 등) 또는 SQL Server가 아닌 SQL Server 주소 공간에로드 된 DLL에 할당 된 메모리는 최대 서버 메모리 외부에 할당됩니다. SQL Server 2012의 IIRC 백업 작업에도 여전히 버퍼 풀 외부의 메모리가 할당됩니다.
링크 된 서버를 사용하여 다른 RDBMS를 쿼리하고 있습니까? 동일한 Windows 시스템에 설치된 다른 소프트웨어 일부 공유 위치에 다음 쿼리의 결과를 게시 할 수 있습니까
select type,
sum(pages_kb)/1024 as [Memory utilized in MB],
sum(awe_allocated_kb)/1024 as [Memory allocated though Windows API]
from sys.dm_os_memory_clerks
group by type
order by [Memory utilized in MB] desc
Go
-------
select (virtual_address_space_committed_kb/1024) as virtual_address_space_committed_MB,
(locked_page_allocations_kb/1024) locked_page_allocations_MB,
(pages_kb/1024) [memory allocated MB]
from sys.dm_os_memory_nodes
Go
-------
SELECT SUM (pages_in_bytes)/1024 as 'KB Used', type
FROM sys.dm_os_memory_objects
GROUP BY type
ORDER BY 'KB Used' DESC;
GO
--------
select name,
type,
sum(pages_kb)/1024 as [Mem MB],
sum(entries_count) as [Total Entry count] from sys.dm_os_memory_cache_counters
group by
type, name
order by [Mem MB] desc
Go
-----
select * from sys.dm_os_loaded_modules where company <> 'Microsoft Corporation'
go
DBCC MMEMORYSTATUS
일부 공유 위치에 전체 출력을 업로드 하고 여기에 링크를 게시 할 수 있습니까? 이것은 어떤 구성 요소가 메모리를 사용하는지 이해하는 데 도움이됩니다.
편집 : dbcc memorystatus 출력에 따라 2 개의 NUMA 노드를 볼 수 있으며 각 노드에서 사용하는 메모리는 약
Node 1 : VM Committed 33554380
Node 2: VM Committed 33554420
Total is approx 64 G.
memorystatus 출력에 Memory Manager가 표시되면
Memory Manager KB
---------------------------------------- -----------
VM Reserved 260726964
VM Committed **67108820**
실제로 커밋 된 VM은 SQL Server에서 커밋 한 가상 메모리이며이 메모리가 커밋되므로이 메모리가 커밋됩니다 physical memory backing it
. 이것은 다시 SQL Server가 최대 서버 메모리에 설정된 65G를 사용하고 있다고 생각하게합니다.
이것이 최대 서버 메모리입니다. 따라서 메모리가 두 노드 사이에 잘 분산되어 있으므로 아래의 쿼리 jut 출력을 추가하여 확인할 수도 있습니다. 스크린 샷을 추가하십시오
SELECT (physical_memory_in_use_kb/1024)/1024 AS [PhysicalMemInUseGB]
FROM sys.dm_os_process_memory;
GO
SELECT TOP (20) * FROM sys.dm_os_memory_clerks ORDER BY pages_kb DESC;
?