次の方法で共有


sys.dm_os_out_of_memory_events

適用対象: Azure SQL Database Azure SQL Managed Instance

メモリ不足 (OOM) イベントのログを返します。

Azure SQL Database のメモリ不足状態の詳細については、「 Azure SQL Database のメモリ不足エラーをトラブルシューティングする」を参照してください。

列名 データ型 説明
event_time datetime2(null ではない) OOM イベント時間
oom_cause tinyint、null ではない OOM の根本原因を示す数値。 OOM の原因はヒューリスティック アルゴリズムによって決定され、有限の信頼度が提供されます。
oom_cause_desc nvarchar(60), not null oom_causeの説明。次のいずれかです。
0. 不明 - OOM の原因を特定できませんでした
1. HEKATON_POOL_MEMORY_LOW - インメモリ OLTP に使用されるリソース プール内のメモリが不足しています。 詳細については、「 Monitor In-Memory 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 以外の使用状況 (MB 単位)。
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(60), not null oom_factorの説明。 内部使用のみ。 次のいずれか:
0 - 未定義
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 - FRAGMENT
12 - INIT_DESCRIPTOR
13 - MEMORY_POOL_PRESSURE
14 - DESCRIPTOR_ALLOCATOR
15 - DESCRIPTOR_ALLOCATOR_ESCAPE
oom_resource_pools nvarchar(max)、null メモリ不足のリソース プール (各プールのメモリ使用量の統計情報を含む)。 この情報は JSON 値として提供されます。
top_memory_clerks nvarchar(max), not null 各書記のメモリ使用量統計を含む、メモリ消費量別の上位メモリ クラーク。 この情報は JSON 値として提供されます。
top_resource_pools nvarchar(max), not null 各リソース プールのメモリ使用量の統計情報など、メモリ使用量別の上位リソース プール。 この情報は JSON 値として提供されます。
possible_leaked_memory_clerks nvarchar(max)、null メモリ リークが発生したメモリ クラーク。 ヒューリスティックに基づき、有限の信頼度を提供します。 この情報は JSON 値として提供されます。
possible_non_sos_leaked_memory_mb int、null SOS 以外のメモリ (存在する場合) がメガバイト単位でリークされました。 ヒューリスティックに基づき、有限の信頼度を提供します。

アクセス許可

Azure SQL Managed Instance では、 VIEW SERVER STATE アクセス許可が必要です。

SQL Database BasicS0、および S1 サービス目標、および弾性プール内のデータベースの場合サーバー管理者アカウント、Microsoft Entra 管理者アカウント、または##MS_ServerStateReader## サーバー ロールのメンバーシップが必要です。 他のすべての SQL Database サービス目標では、データベースに対する VIEW DATABASE STATE アクセス許可または ##MS_ServerStateReader## サーバー ロールのメンバーシップのいずれかが必要です。

解説

このビューの各行は、データベース エンジンで発生したメモリ不足 (OOM) イベントを表します。 すべての OOM イベントがキャプチャされるわけではありません。 より新しい OOM イベントが発生すると、古い OOM イベントが結果セットから消える可能性があります。 結果セットは、データベース エンジンの再起動後も保持されません。

現時点では、この DMV は表示されますが、SQL Server 2022 (16.x) ではサポートされていません。

拡張イベントsummarized_oom_snapshotする

summarized_oom_snapshot 拡張イベントは、検出を簡略化するための既存 の system_health イベント セッションの一部です。 このイベントは、メモリ不足 (OOM) イベントが検出されたときに表示されます。 この DMV は、2022 年 1 月に Azure SQL Database に導入された、 summarized_oom_snapshot 拡張イベントに記録されたアクティビティに合わせて調整されます。 詳細については、「ブログ: データベース エンジンのメモリ不足エラーをトラブルシューティングする新しい方法」を参照してください。

次の例では、現在接続されているデータベースの最新の時刻順に並べ替えられたイベント データを返します。

SELECT * FROM sys.dm_os_out_of_memory_events ORDER BY event_time DESC;