sys.dm_os_out_of_memory_events
適用於:Azure SQL 資料庫 Azure SQL 受控執行個體
傳回記憶體不足的記錄檔 (OOM) 事件。
如需 Azure SQL 資料庫 記憶體不足狀況的詳細資訊,請參閱針對 Azure SQL 資料庫 中的記憶體不足錯誤進行疑難解答。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
event_time |
datetime2,而非 null | OOM 事件時間 |
oom_cause |
tinyint,非 Null | 數值,表示 OOM 根本原因。 OOM 原因是由啟發學習法演算法所決定,並提供有限的信賴度。 |
oom_cause_desc |
nvarchar(60),非 Null | 的描述, oom_cause 其中一個:0. 未知 - 無法判斷 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 - OOM 由於非 SOS 記憶體中流失,例如載入的模組 6. SERVERLESS_MEMORY_RECLAMATION - 與無伺服器資料庫中記憶體回收相關的 OOM 7. MEMORY_LEAK - OOM 由於 SOS 記憶體中流失 8. SLOW_BUFFER_POOL_SHRINK - 由於緩衝池在記憶體壓力下釋放記憶體的速度不夠快,OOM 9. INTERNAL_POOL - 內部資源集區內存不足 10. SYSTEM_POOL - 系統資源集區中的記憶體不足 11. QUERY_MEMORY_GRANTS - OOM 由於查詢所持有的大型記憶體授與 12. REPLICAS_AND_AVAILABILITY - OOM,因為 SloSecSharedPool 資源集區中的工作負載 |
available_physical_memory_mb |
int,非 Null | 可用的物理記憶體,以 MB 為單位 |
initial_job_object_memory_limit_mb |
int, null | 資料庫引擎啟動時的作業物件記憶體限制,以 MB 為單位。 如需作業對象的詳細資訊,請參閱 資源控管。 |
current_job_object_memory_limit_mb |
int, null | 作業物件目前的記憶體限制,以 MB 為單位 |
process_memory_usage_mb |
int,非 Null | 實例的總進程記憶體使用量以 MB 為單位 |
non_sos_memory_usage_mb |
int,非 Null | 非 SOS 使用量以 MB 為單位,包括 SOS 建立的線程、非 SOS 元件所建立的線程、載入的 DLL 等。 |
committed_memory_target_mb |
int,非 Null | SOS 以 MB 為單位的目標記憶體 |
committed_memory_mb |
int,非 Null | SOS 認可記憶體以 MB 為單位 |
allocation_potential_memory_mb |
int,非 Null | 資料庫引擎實例可用於新配置的記憶體,以 MB 為單位 |
oom_factor |
tinyint,非 Null | 值,提供與 OOM 事件相關的其他資訊,僅供內部使用 |
oom_factor_desc |
nvarchar(60),非 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 - SIMULATED 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(max), null | 記憶體不足的資源集區,包括每個集區的記憶體使用量統計數據。 此資訊會以 JSON 值的形式提供。 |
top_memory_clerks |
nvarchar(max),非 Null | 記憶體耗用量最高的記憶體 Clerk,包括每個 Clerk 的記憶體使用量統計數據。 此資訊會以 JSON 值的形式提供。 |
top_resource_pools |
nvarchar(max),非 Null | 依記憶體耗用量排在前列的資源集區,包括每個資源集區的記憶體使用量統計數據。 此資訊會以 JSON 值的形式提供。 |
possible_leaked_memory_clerks |
nvarchar(max), null | 記憶體 clerk,其記憶體流失。 根據啟發學習法,並提供有限的信賴度。 此資訊會以 JSON 值的形式提供。 |
possible_non_sos_leaked_memory_mb |
int, null | 如果有任何,則會以 MB 為單位外洩非 SOS 記憶體。 根據啟發學習法,並提供有限的信賴度。 |
權限
在 Azure SQL 受控執行個體 上,需要VIEW SERVER STATE
許可權。
在 SQL 資料庫 基本、S0 和 S1 服務目標上,以及彈性集區中的資料庫,需要伺服器管理員帳戶、Microsoft Entra 系統管理員帳戶,或伺服器角色的成員##MS_ServerStateReader##
資格。 在所有其他 SQL Database 服務目標上,需要資料庫的 VIEW DATABASE STATE
權限或 ##MS_ServerStateReader##
伺服器角色的成員資格。
備註
此檢視中的每個數據列都代表資料庫引擎中發生的記憶體不足 (OOM) 事件。 並非所有 OOM 事件都可以擷取。 較舊的 OOM 事件可能會隨著最近的 OOM 事件發生而從結果集中消失。 在資料庫引擎重新啟動時,不會保存結果集。
目前,SQL Server 2022 (16.x) 不支援此 DMV。
summarized_oom_snapshot擴充事件
summarized_oom_snapshot
擴充事件是現有 system_health
事件工作階段的一部分,可簡化偵測。 偵測到記憶體不足 (OOM) 事件時,會出現此事件。 此 DMV 與擴充事件中所summarized_oom_snapshot
記錄的活動一致,這兩者都是在 2022 年 1 月導入至 Azure SQL 資料庫。 如需詳細資訊,請參閱部落格:針對資料庫引擎中記憶體不足錯誤進行疑難排解的新方式。
範例
下列範例會傳回目前連接資料庫最近時間所排序的事件數據。
SELECT * FROM sys.dm_os_out_of_memory_events ORDER BY event_time DESC;