적용 대상:Azure SQL 데이터베이스
Azure SQL Managed Instance
최근 OOM(메모리 부족) 이벤트 집합을 반환합니다.
Azure SQL Database의 메모리 부족 상태에 대한 자세한 내용은 Azure SQL Database의 메모리 부족 오류 문제를 참조하세요.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
event_time |
날짜/시간 | OOM 이벤트 시간입니다. Null을 허용하지 않습니다. |
oom_cause |
tinyint | OOM 근본 원인을 나타내는 숫자 값입니다. OOM 원인은 추론 알고리즘에 의해 결정되며 한정된 신뢰도로 제공됩니다. Null을 허용하지 않습니다. |
oom_cause_desc |
nvarchar(30) | 에 대한 설명입니다 oom_cause . Null을 허용하지 않습니다.0. - OOM 원인을 확인할 수 없습니다. UNKNOWN 1. HEKATON_POOL_MEMORY_LOW - 메모리 내 OLTP에 사용되는 리소스 풀의 메모리 부족 자세한 내용은 메모리 내 OLTP 모니터링을 참조하세요. 2. MEMORY_LOW - 데이터베이스 엔진 프로세스에 사용할 수 있는 메모리 부족3. OS_MEMORY_PRESSURE - 운영 체제의 외부 메모리 압력으로 인한 OOM4. OS_MEMORY_PRESSURE_SQL - 다른 데이터베이스 엔진 인스턴스의 외부 메모리 압력으로 인한 OOM5. NON_SOS_MEMORY_LEAK - 비 SOS 메모리의 누수로 인한 OOM(예: 로드된 모듈)6. SERVERLESS_MEMORY_RECLAMATION - 서버리스 데이터베이스의 메모리 매립과 관련된 OOM7. MEMORY_LEAK - SOS 메모리 누수로 인한 OOM8. SLOW_BUFFER_POOL_SHRINK - 버퍼 풀이 메모리 압력을 받을 만큼 빠르게 메모리를 해제하지 않기 때문에 OOM9. INTERNAL_POOL - 내부 리소스 풀의 메모리 부족10. SYSTEM_POOL - 시스템 리소스 풀의 메모리 부족11. QUERY_MEMORY_GRANTS - 쿼리에서 보유한 대용량 메모리 부여로 인한 OOM12. REPLICAS_AND_AVAILABILITY - SloSecSharedPool 리소스 풀의 워크로드로 인한 OOM |
available_physical_memory_mb |
int | 사용 가능한 실제 메모리(메가바이트)입니다. Null을 허용하지 않습니다. |
initial_job_object_memory_limit_mb |
int | 데이터베이스 엔진 시작 시 작업 개체 메모리 제한(메가바이트)입니다. 작업 개체에 대한 자세한 내용은 리소스 거버넌스를 참조 하세요. Null을 허용합니다. |
current_job_object_memory_limit_mb |
int | 작업 개체 현재 메모리 제한(메가바이트)입니다. Null을 허용합니다. |
process_memory_usage_mb |
int | 인스턴스별 총 프로세스 메모리 사용량(메가바이트)입니다. Null을 허용하지 않습니다. |
non_sos_memory_usage_mb |
int | SOS 생성 스레드, 비 SOS 구성 요소에서 만든 스레드, 로드된 DLL 등을 포함하여 SOS가 아닌 사용량(메가바이트)입니다. null을 허용하지 않습니다. |
committed_memory_target_mb |
int | SOS 대상 메모리(메가바이트)입니다. Null을 허용하지 않습니다. |
committed_memory_mb |
int | SOS 커밋된 메모리(메가바이트). Null을 허용하지 않습니다. |
allocation_potential_memory_mb |
int | 새 할당을 위해 데이터베이스 엔진 인스턴스에 사용할 수 있는 메모리(메가바이트)입니다. Null을 허용하지 않습니다. |
oom_factor |
tinyint | 내부용으로만 OOM 이벤트와 관련된 추가 정보를 제공하는 값입니다. Null을 허용하지 않습니다. |
oom_factor_desc |
nvarchar(30) | 에 대한 설명입니다 oom_factor . 내부 전용. Null을 허용하지 않습니다.0 - UNDEFINED 1 - ALLOCATION_POTENTIAL 2 - BLOCK_ALLOCATOR 3 - ESCAPE_TIMEOUT 4 - FAIL_FAST 5 - MEMORY_POOL 6 - EMERGENCY_ALLOCATOR 7 - VIRTUAL_ALLOC 8 - SIMULATED 9 - BUF_ALLOCATOR 10 - QUERY_MEM_QUEUE 11 - FRAGMENT 12 - INIT_DESCRIPTOR 13 - MEMORY_POOL_PRESSURE 14 - DESCRIPTOR_ALLOCATOR 15 - DESCRIPTOR_ALLOCATOR_ESCAPE |
oom_resource_pools |
nvarchar(4000) | 각 풀에 대한 메모리 사용 통계를 포함하여 메모리 부족 리소스 풀입니다. 이 정보는 JSON 값으로 제공됩니다. Null을 허용합니다. |
top_memory_clerks |
nvarchar(4000) | 각 클럭에 대한 메모리 사용 통계를 포함하여 메모리 사용량별 상위 메모리 클럭 이 정보는 JSON 값으로 제공됩니다. Null을 허용합니다. |
top_resource_pools |
nvarchar(4000) | 각 리소스 풀에 대한 메모리 사용 통계를 포함하여 메모리 사용량별 상위 리소스 풀입니다. 이 정보는 JSON 값으로 제공됩니다. Null을 허용합니다. |
possible_leaked_memory_clerks |
nvarchar(4000) | 메모리가 누수된 메모리 클럭입니다. 추론을 기반으로 하며 한정된 수준의 신뢰도를 제공합니다. 이 정보는 JSON 값으로 제공됩니다. Null을 허용합니다. |
possible_non_sos_leaked_memory_mb |
int | SOS가 아닌 메모리가 MB(있는 경우)로 유출되었습니다. 추론을 기반으로 하며 한정된 수준의 신뢰도를 제공합니다. Null을 허용합니다. |
사용 권한
Azure SQL Managed Instance에서 사용 권한이 필요합니다 VIEW SERVER PERFORMANCE STATE
.
SQL Database Basic, S0 및 S1 서비스 목표 또는 탄력적 풀 내의 데이터베이스에 대해서는 서버 관리자 계정, Microsoft Entra 관리자 계정 또는 ##MS_ServerPerformanceStateReader##
서버 역할의 멤버 자격이 필요합니다. 다른 모든 SQL Database 서비스 목표에 대해서는 데이터베이스에 대한 VIEW DATABASE PERFORMANCE STATE
권한 또는 ##MS_ServerPerformanceStateReader##
서버 역할의 멤버 자격이 필요합니다.
설명
이 보기의 각 행은 데이터베이스 엔진에서 발생한 OOM(메모리 부족) 이벤트를 나타냅니다. 모든 OOM 이벤트를 캡처할 수 있는 것은 아닙니다. 최신 OOM 이벤트가 발생하면 이전 OOM 이벤트가 결과 집합에서 사라질 수 있습니다. 결과 집합은 데이터베이스 엔진을 다시 시작할 때 유지되지 않습니다.
현재 이 DMV는 SQL Server 2022(16.x) 및 SQL Server 2025(17.x) 미리 보기에서 표시되지만 지원되지 않습니다.
확장 이벤트 summarized_oom_snapshot
summarized_oom_snapshot
확장 이벤트는 메모리 부족 이벤트 검색을 system_health
간소화하기 위한 이벤트 세션의 일부입니다. 각 summarized_oom_snapshot
확장 이벤트는 의 행에 sys.dm_os_out_of_memory_events
해당합니다. 자세한 내용은 블로그: 데이터베이스 엔진의 메모리 부족 오류를 해결하는 새로운 방법을 참조하세요.
예시
A. 사용 가능한 모든 OOM 이벤트 가져오기
다음 예제에서는 현재 연결된 데이터베이스를 호스팅하는 데이터베이스 엔진에 대해 가장 최근 시간별로 정렬된 모든 이벤트 데이터를 반환합니다.
SELECT *
FROM sys.dm_os_out_of_memory_events
ORDER BY event_time DESC;
B. 각 OOM 이벤트에 대한 상위 메모리 클럭 가져오기
다음 예제에서는 이벤트 데이터의 하위 집합을 반환하고 열에서 JSON 데이터를 top_memory_clerks
확장합니다. 결과 집합의 각 행은 특정 OOM 이벤트에 대한 최상위 메모리 클럭을 나타냅니다.
SELECT event_time,
oom_cause_desc,
oom_factor_desc,
oom_resource_pools,
top_resource_pools,
clerk_type_name,
clerk_page_allocated_mb,
clerk_vm_committed_mb
FROM sys.dm_os_out_of_memory_events
CROSS APPLY OPENJSON(top_memory_clerks)
WITH (
clerk_type_name sysname '$.clerk_type_name',
clerk_page_allocated_mb bigint '$.page_allocated_mb',
clerk_vm_committed_mb bigint '$.vm_committed_mb'
)
ORDER BY event_time DESC, clerk_page_allocated_mb DESC;
C. 각 OOM 이벤트에 대한 상위 리소스 풀 가져오기
다음 예제에서는 이벤트 데이터의 하위 집합을 반환하고 열에서 JSON 데이터를 top_resource_pools
확장합니다. 결과 집합의 각 행은 특정 OOM 이벤트에 대한 상위 리소스 풀을 나타냅니다.
SELECT event_time,
oom_cause_desc,
oom_factor_desc,
oom_resource_pools,
top_memory_clerks,
pool_name,
pool_allocations_mb,
pool_target_mb,
pool_is_oom
FROM sys.dm_os_out_of_memory_events
CROSS APPLY OPENJSON(top_resource_pools)
WITH (
pool_name sysname '$.pool_name',
pool_allocations_mb bigint '$.allocations_mb',
pool_target_mb bigint '$.pool_target_mb',
pool_is_oom bit '$.is_oom'
)
ORDER BY event_time DESC, pool_allocations_mb DESC;
관련 콘텐츠
- sys.resource_stats
- sys.server_resource_stats
- sys.dm_db_resource_stats(Azure SQL 데이터베이스)
- Azure SQL Database에서 메모리 내 기술을 사용하여 성능 최적화
- Azure SQL Managed Instance에서 메모리 내 기술을 사용하여 성능 최적화
- Azure SQL 데이터베이스에서 메모리 내 OLTP 스토리지 모니터링
- Azure SQL Managed Instance에서 메모리 내 OLTP 스토리지 모니터링
- Azure SQL Database를 사용하여 메모리 부족 오류 문제 해결