다음을 통해 공유


sys.dm_os_out_of_memory_events

적용 대상: Azure SQL 데이터베이스 Azure SQL Managed Instance

OOM(메모리 부족) 이벤트의 로그를 반환합니다.

Azure SQL Database의 메모리 부족 상태에 대한 자세한 내용은 Azure SQL Database의 메모리 부족 오류 문제를 참조하세요.

열 이름 데이터 형식 설명
event_time datetime, null이 아님 OOM 이벤트 시간입니다.
oom_cause tinyint, null이 아님 OOM 근본 원인을 나타내는 숫자 값입니다. OOM 원인은 추론 알고리즘에 의해 결정되며 한정된 신뢰도로 제공됩니다.
oom_cause_desc nvarchar(30), null이 아님 에 대한 설명은 oom_cause다음 중 하나입니다.
0. UNKNOWN - OOM 원인을 확인할 수 없습니다.
1. HEKATON_POOL_MEMORY_LOW - 메모리 내 OLTP에 사용되는 리소스 풀의 메모리 부족 자세한 내용은 메모리 내 OLTP 모니터링을 참조하세요.
2. MEMORY_LOW - 데이터베이스 엔진 프로세스에 사용할 수 있는 메모리 부족
3. OS_MEMORY_PRESSURE - 운영 체제의 외부 메모리 압력으로 인한 OOM
4. OS_MEMORY_PRESSURE_SQL - 다른 데이터베이스 엔진 인스턴스의 외부 메모리 압력으로 인한 OOM
5. NON_SOS_MEMORY_LEAK - 비 SOS 메모리의 누수로 인한 OOM(예: 로드된 모듈)
6. SERVERLESS_MEMORY_RECLAMATION - 서버리스 데이터베이스의 메모리 매립과 관련된 OOM
7. MEMORY_LEAK - SOS 메모리 누수로 인한 OOM
8. SLOW_BUFFER_POOL_SHRINK - 버퍼 풀이 메모리 압력 하에서 메모리를 충분히 빠르게 해제하지 않기 때문에 OOM
9. INTERNAL_POOL - 내부 리소스 풀의 메모리 부족
10. SYSTEM_POOL - 시스템 리소스 풀의 메모리 부족
11. QUERY_MEMORY_GRANTS - 쿼리에서 보유한 대용량 메모리 부여로 인한 OOM
12. 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, null이 아님 SOS 생성 스레드, 비 SOS 구성 요소에서 만든 스레드, 로드된 DLL 등을 포함하여 SOS가 아닌 사용량(메가바이트)입니다.
committed_memory_target_mb int, null이 아님 SOS 대상 메모리(메가바이트)입니다.
committed_memory_mb int, null이 아님 SOS 커밋된 메모리(메가바이트).
allocation_potential_memory_mb int, null이 아님 새 할당을 위해 데이터베이스 엔진 인스턴스에 사용할 수 있는 메모리(메가바이트)입니다.
oom_factor tinyint, null이 아님 내부용으로만 OOM 이벤트와 관련된 추가 정보를 제공하는 값입니다.
oom_factor_desc nvarchar(30), null이 아님 에 대한 설명입니다 oom_factor. 내부 전용. 다음 중 하나입니다.
0 - UNDEFINED
1 - ALLOCATION_POTENTIAL
2 - BLOCK_ALLOCATOR
3 - ESCAPE_TIMEOUT
4 - FAIL_FAST
5 - MEMORY_POOL
6 - EMERGENCY_ALLOCATOR
7 - VIRTUAL_ALLOC
8 - 시뮬레이션됨
9 - BUF_ALLOCATOR
10 - QUERY_MEM_QUEUE
11 - 조각
12 - INIT_DESCRIPTOR
13 - MEMORY_POOL_PRESSURE
14 - DESCRIPTOR_ALLOCATOR
15 - DESCRIPTOR_ALLOCATOR_ESCAPE
oom_resource_pools nvarchar(4000), null 각 풀에 대한 메모리 사용 통계를 포함하여 메모리 부족 리소스 풀입니다. 이 정보는 JSON 값으로 제공됩니다.
top_memory_clerks nvarchar(4000), null 각 클럭에 대한 메모리 사용 통계를 포함하여 메모리 사용량별 상위 메모리 클럭 이 정보는 JSON 값으로 제공됩니다.
top_resource_pools nvarchar(4000), null 각 리소스 풀에 대한 메모리 사용 통계를 포함하여 메모리 사용량별 상위 리소스 풀입니다. 이 정보는 JSON 값으로 제공됩니다.
possible_leaked_memory_clerks nvarchar(4000), null 메모리가 누수된 메모리 클럭입니다. 추론을 기반으로 하며 한정된 수준의 신뢰도를 제공합니다. 이 정보는 JSON 값으로 제공됩니다.
possible_non_sos_leaked_memory_mb int, null SOS가 아닌 메모리가 MB(있는 경우)로 유출되었습니다. 추론을 기반으로 하며 한정된 수준의 신뢰도를 제공합니다.

사용 권한

Azure SQL Managed Instance에서 사용 권한이 필요합니다 VIEW SERVER PERFORMANCE STATE .

SQL Database Basic, S0S1 서비스 목표 또는 탄력적 풀 내의 데이터베이스에 대해서는 서버 관리자 계정, Microsoft Entra 관리자 계정 또는 ##MS_ServerPerformanceStateReader## 서버 역할의 멤버 자격이 필요합니다. 다른 모든 SQL Database 서비스 목표에 대해서는 데이터베이스에 대한 VIEW DATABASE PERFORMANCE STATE 권한 또는 ##MS_ServerPerformanceStateReader## 서버 역할의 멤버 자격이 필요합니다.

설명

이 보기의 각 행은 데이터베이스 엔진에서 발생한 OOM(메모리 부족) 이벤트를 나타냅니다. 모든 OOM 이벤트를 캡처할 수 있는 것은 아닙니다. 최신 OOM 이벤트가 발생하면 이전 OOM 이벤트가 결과 집합에서 사라질 수 있습니다. 결과 집합은 데이터베이스 엔진을 다시 시작할 때 유지되지 않습니다.

현재 이 DMV는 SQL Server 2022(16.x)에서 표시되지만 지원되지 않습니다.

확장 이벤트 summarized_oom_snapshot

summarized_oom_snapshot 확장 이벤트는 메모리 부족 이벤트 검색을 system_health 간소화하기 위한 이벤트 세션의 일부입니다. 각 summarized_oom_snapshot 확장 이벤트는 의 행에 sys.dm_os_out_of_memory_events해당합니다. 자세한 내용은 블로그: 데이터베이스 엔진의 메모리 부족 오류를 해결하는 새로운 방법을 참조하세요.

예시

다음 예제에서는 현재 연결된 데이터베이스를 호스팅하는 데이터베이스 엔진에 대해 가장 최근 시간별로 정렬된 이벤트 데이터를 반환합니다.

SELECT *
FROM sys.dm_os_out_of_memory_events
ORDER BY event_time DESC;