sys.dm_os_memory_objects(Transact-SQL)
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)
SQL Server에서 현재 할당한 메모리 개체를 반환합니다. sys.dm_os_memory_objects 사용하여 메모리 사용을 분석하고 메모리 누수 가능성을 식별할 수 있습니다.
참고 항목
Azure Synapse Analytics 또는 PDW(Analytics Platform System)에서 이를 호출하려면 이름 sys.dm_pdw_nodes_os_memory_objects 사용합니다. 이 구문은 Azure Synapse Analytics의 서버리스 SQL 풀에서 지원되지 않습니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
memory_object_address | varbinary(8) | 메모리 개체의 주소입니다. Null을 허용하지 않습니다. |
parent_address | varbinary(8) | 부모 메모리 개체의 주소입니다. Null을 허용합니다. |
pages_allocated_count | int | 적용 대상: SQL Server 2008(10.0.x) ~ SQL Server 2008 R2(10.50.x). 이 개체에 의해 할당된 페이지 수입니다. Null을 허용하지 않습니다. |
pages_in_bytes | bigint | 적용 대상: SQL Server 2012(11.x) 이상 메모리 개체의 이 인스턴스에서 할당하는 메모리의 양(바이트)입니다. Null을 허용하지 않습니다. |
creation_options | int | 내부용으로만 사용됩니다. Null을 허용합니다. |
bytes_used | bigint | 내부용으로만 사용됩니다. Null을 허용합니다. |
type | nvarchar(60) | 메모리 개체의 형식입니다. 이 메모리 개체가 속한 일부 구성 요소 또는 메모리 개체의 함수를 나타냅니다. Null을 허용합니다. |
이름 | varchar(128) | 내부용으로만 사용됩니다. Nullable. |
memory_node_id | smallint | 이 메모리 개체에서 사용 중인 메모리 노드의 ID입니다. Null을 허용하지 않습니다. |
creation_time | 날짜/시간 | 내부용으로만 사용됩니다. Null을 허용합니다. |
max_pages_allocated_count | int | 적용 대상: SQL Server 2008(10.0.x) ~ SQL Server 2008 R2(10.50.x). 이 메모리 개체에 의해 할당된 최대 페이지 수입니다. Null을 허용하지 않습니다. |
page_size_in_bytes | int | 적용 대상: SQL Server 2012(11.x) 이상 이 개체에서 할당한 페이지 크기(바이트)입니다. Null을 허용하지 않습니다. |
max_pages_in_bytes | bigint | 이 메모리 개체에서 사용한 최대 메모리 양입니다. Null을 허용하지 않습니다. |
page_allocator_address | varbinary(8) | 페이지 할당자의 메모리 주소입니다. Null을 허용하지 않습니다. 자세한 내용은 sys.dm_os_memory_clerks(Transact-SQL)를 참조 하세요. |
creation_stack_address | varbinary(8) | 내부용으로만 사용됩니다. Null을 허용합니다. |
sequence_num | int | 내부용으로만 사용됩니다. Null을 허용합니다. |
partition_type | int | 적용 대상: SQL Server 2016(13.x) 이상 파티션 유형: 0 - 분할할 수 없는 메모리 개체 1 - 분할 가능한 메모리 개체( 현재 분할되지 않음) 2 - NUMA 노드로 분할된 분할 가능한 메모리 개체입니다. 단일 NUMA 노드가 있는 환경에서는 1과 동일합니다. 3 - CPU로 분할된 분할 가능한 메모리 개체입니다. |
contention_factor | real | 적용 대상: SQL Server 2016(13.x) 이상 이 메모리 개체에 대한 경합을 지정하는 값으로, 0은 경합이 없음을 의미합니다. 이 값은 해당 기간 동안 경합을 반영하여 지정된 수의 메모리 할당이 이루어질 때마다 업데이트됩니다. 스레드로부터 안전한 메모리 개체에만 적용됩니다. |
waiting_tasks_count | bigint | 적용 대상: SQL Server 2016(13.x) 이상 이 메모리 개체에 대한 대기 횟수입니다. 이 카운터는 메모리가 이 메모리 개체에서 할당될 때마다 증가합니다. 증가는 현재 이 메모리 개체에 대한 액세스를 기다리는 작업의 수입니다. 스레드로부터 안전한 메모리 개체에만 적용됩니다. 이는 정확성을 보장하지 않는 최상의 노력 값입니다. |
exclusive_access_count | bigint | 적용 대상: SQL Server 2016(13.x) 이상 이 메모리 개체가 단독으로 액세스된 빈도를 지정합니다. 스레드로부터 안전한 메모리 개체에만 적용됩니다. 이는 정확성을 보장하지 않는 최상의 노력 값입니다. |
pdw_node_id | int | 적용 대상: Azure Synapse Analytics, Analytics Platform System(PDW) 이 배포가 있는 노드의 식별자입니다. |
partition_type, contention_factor, waiting_tasks_count 및 exclusive_access_count SQL Database에서 아직 구현되지 않았습니다.
사용 권한
SQL Server 및 SQL Managed Instance에서는 VIEW SERVER STATE
권한이 필요합니다.
SQL Database Basic, S0 및 S1 서비스 목표 또는 탄력적 풀 내의 데이터베이스에 대해서는 서버 관리자 계정, Microsoft Entra 관리자 계정 또는 ##MS_ServerStateReader##
서버 역할의 멤버 자격이 필요합니다. 다른 모든 SQL Database 서비스 목표에 대해서는 데이터베이스에 대한 VIEW DATABASE STATE
권한 또는 ##MS_ServerStateReader##
서버 역할의 멤버 자격이 필요합니다.
SQL Server 2022 이상에 대한 사용 권한
서버에 대한 VIEW SERVER PERFORMANCE STATE 권한이 필요합니다.
설명
메모리 개체는 힙입니다. 메모리 클럭에서 제공하는 할당보다 세분성이 더 세분화된 할당을 제공합니다. SQL Server 구성 요소는 메모리 클럭 대신 메모리 개체를 사용합니다. 메모리 개체는 메모리 클럭의 페이지 할당자 인터페이스를 사용하여 페이지를 할당합니다. 메모리 개체는 가상 또는 공유 메모리 인터페이스를 사용하지 않습니다. 구성 요소는 할당 패턴에 따라 여러 다른 유형의 메모리 개체를 만들어 임의의 크기를 가진 영역을 할당할 수 있습니다.
메모리 개체의 일반적인 페이지 크기는 8KB입니다. 그러나 증분 메모리 개체에는 512바이트에서 8KB까지의 페이지 크기가 있을 수 있습니다.
참고 항목
페이지 크기는 최대 할당이 아닙니다. 대신 페이지 크기는 페이지 할당자가 지원하고 메모리 클럭에서 구현하는 할당 세분성입니다. 메모리 개체에서 8KB보다 큰 할당을 요청할 수 있습니다.
예제
다음 예제에서는 각 메모리 개체 형식에 의해 할당된 메모리 양을 반환합니다.
SELECT SUM (pages_in_bytes) as 'Bytes Used', type
FROM sys.dm_os_memory_objects
GROUP BY type
ORDER BY 'Bytes Used' DESC;
GO
참고 항목
SQL Server 운영 체제 관련 동적 관리 뷰(Transact-SQL)
sys.dm_os_memory_clerks(Transact-SQL)