適用対象:Azure SQL データベース
Azure SQL Managed Instance
最近のメモリ不足 (OOM) イベントのセットを返します。
Azure SQL Database のメモリ不足状態の詳細については、「 Azure SQL Database のメモリ不足エラーをトラブルシューティングする」を参照してください。
列名 | データ型 | 説明 |
---|---|---|
event_time |
datetime | OOM イベント時間。 Null 許容ではありません。 |
oom_cause |
tinyint | OOM の根本原因を示す数値。 OOM の原因はヒューリスティック アルゴリズムによって決定され、有限の信頼度が提供されます。 Null 許容ではありません。 |
oom_cause_desc |
nvarchar(30) |
oom_cause の説明。 Null 許容ではありません。0. UNKNOWN - OOM の原因を特定できませんでした1. HEKATON_POOL_MEMORY_LOW - インメモリ OLTP に使用されるリソース プール内のメモリが不足しています。 詳細については、「 Monitor In-Memory OLTP」を参照してください。 2. MEMORY_LOW - データベース エンジン プロセスで使用できるメモリが不足しています3. OS_MEMORY_PRESSURE - オペレーティング システムからの外部メモリ負荷による OOM4. OS_MEMORY_PRESSURE_SQL - 他のデータベース エンジン インスタンスからの外部メモリ不足による OOM5. NON_SOS_MEMORY_LEAK - 読み込まれたモジュールなど、SOS 以外のメモリのリークによる OOM6. 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 以外の使用状況 (MB 単位)。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 以外のメモリ (存在する場合) がメガバイト単位でリークされました。 ヒューリスティックに基づき、有限の信頼度を提供します。 NULL 値が許可されます。 |
アクセス許可
Azure SQL Managed Instance では、 VIEW SERVER PERFORMANCE STATE
アクセス許可が必要です。
SQL Database の Basic、S0、S1 サービス対象、および Elastic Pool のデータベースの場合、サーバー管理者アカウント、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 イベントの上位メモリ クラークを取得する
次の例では、イベント データのサブセットを返し、 top_memory_clerks
列の JSON データを展開します。 結果セットの各行は、特定の 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 イベントの上位リソース プールを取得する
次の例では、イベント データのサブセットを返し、 top_resource_pools
列の JSON データを展開します。 結果セットの各行は、特定の 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 Database)
- Azure SQL Database でメモリ内テクノロジを使用してパフォーマンスを最適化する
- Azure SQL Managed Instance でメモリ内テクノロジを使用してパフォーマンスを最適化する
- Azure SQL データベースのインメモリ OLTP ストレージを監視する
- Azure SQL Managed Instance のインメモリ OLTP ストレージを監視する
- Azure SQL Database でのメモリ不足エラーのトラブルシューティング