sys.dm_os_memory_objects (Transact-SQL)
適用於: SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)
傳回 SQL Server 目前配置的記憶體物件。 您可以使用 sys.dm_os_memory_objects 來分析記憶體使用量,並識別可能的記憶體流失。
注意
若要從 Azure Synapse Analytics 或 Analytics Platform System (PDW) 呼叫此專案,請使用名稱 sys.dm_pdw_nodes_os_memory_objects。 Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
memory_object_address | varbinary(8) | 記憶體物件的位址。 不可為 Null。 |
parent_address | varbinary(8) | 父記憶體物件的位址。 可為 Null。 |
pages_allocated_count | int | 適用於:SQL Server 2008 (10.0.x) 到 SQL Server 2008 R2 (10.50.x)。 這個物件所配置的頁數。 不可為 Null。 |
pages_in_bytes | bigint | 適用於:SQL Server 2012 (11.x) 和更新版本。 記憶體物件實例所配置的位元組數量。 不可為 Null。 |
creation_options | int | 僅供內部使用。 可為 Null。 |
bytes_used | bigint | 僅供內部使用。 可為 Null。 |
type | nvarchar(60) | 記憶體物件的類型。 這表示這個記憶體物件所屬的一些元件,或記憶體物件的函式。 可為 Null。 |
name | varchar(128) | 僅供內部使用。 可為 Null。 |
memory_node_id | smallint | 這個記憶體物件所使用的記憶體節點標識碼。 不可為 Null。 |
creation_time | datetime | 僅供內部使用。 可為 Null。 |
max_pages_allocated_count | int | 適用於:SQL Server 2008 (10.0.x) 到 SQL Server 2008 R2 (10.50.x)。 這個記憶體物件配置的頁數上限。 不可為 Null。 |
page_size_in_bytes | int | 適用於:SQL Server 2012 (11.x) 和更新版本。 這個物件所配置位元組的分頁大小。 不可為 Null。 |
max_pages_in_bytes | bigint | 這個記憶體物件所使用的記憶體數量上限。 不可為 Null。 |
page_allocator_address | varbinary(8) | 頁面配置器的記憶體位址。 不可為 Null。 如需詳細資訊,請參閱 sys.dm_os_memory_clerks (Transact-SQL)。 |
creation_stack_address | varbinary(8) | 僅供內部使用。 可為 Null。 |
sequence_num | int | 僅供內部使用。 可為 Null。 |
partition_type | int | 適用於:SQL Server 2016 (13.x) 和更新版本。 資料分割的類型: 0 - 不可分割的記憶體物件 1 - 可分割的記憶體物件,目前未分割 2 - 可分割的記憶體物件,由 NUMA 節點分割。 在具有單一 NUMA 節點的環境中,這相當於 1。 3 - 可分割的記憶體物件,由 CPU 進行分割。 |
contention_factor | real | 適用於:SQL Server 2016 (13.x) 和更新版本。 值,指定這個記憶體物件的爭用,0 表示沒有爭用。 每當指定數目的記憶體配置在該期間反映爭用時,就會更新此值。 僅適用於安全線程的記憶體物件。 |
waiting_tasks_count | bigint | 適用於:SQL Server 2016 (13.x) 和更新版本。 此記憶體物件的等候次數。 每當從這個記憶體物件配置記憶體時,就會遞增此計數器。 遞增是目前等候存取此記憶體物件的工作數目。 僅適用於安全線程的記憶體物件。 這是沒有正確性保證的最佳努力值。 |
exclusive_access_count | bigint | 適用於:SQL Server 2016 (13.x) 和更新版本。 指定獨佔存取此記憶體物件的頻率。 僅適用於安全線程的記憶體物件。 這是沒有正確性保證的最佳努力值。 |
pdw_node_id | int | 適用於:Azure Synapse Analytics、Analytics Platform System (PDW) 此散發節點的標識碼。 |
partition_type、contention_factor、waiting_tasks_count和exclusive_access_count尚未在 SQL 資料庫 中實作。
權限
在 SQL Server 和 SQL 受控執行個體上,需要 VIEW SERVER STATE
權限。
在 SQL Database [Basic]、[S0] 和 [S1] 服務目標,以及彈性集區中的資料庫,需要伺服器管理員帳戶、伺服器管理員帳戶、Microsoft Entra 管理員帳戶或 ##MS_ServerStateReader##
伺服器角色的成員資格。 在所有其他 SQL Database 服務目標上,需要資料庫的 VIEW DATABASE STATE
權限或 ##MS_ServerStateReader##
伺服器角色的成員資格。
SQL Server 2022 及更新版本的權限
需要伺服器上的 VIEW SERVER PERFORMANCE STATE 權限。
備註
記憶體對象是堆積。 它們提供比記憶體 Clerk 所提供更精細數據粒度的配置。 SQL Server 元件會使用記憶體物件,而不是記憶體 Clerk。 記憶體物件會使用記憶體 Clerk 的頁面配置器介面來配置頁面。 記憶體物件不會使用虛擬或共用記憶體介面。 根據配置模式,元件可以建立不同類型的記憶體物件,以配置任意大小的區域。
記憶體物件的一般頁面大小為8 KB。 不過,累加記憶體物件可以有範圍從512位元組到8 KB的頁面大小。
注意
頁面大小不是最大配置。 相反地,頁面大小是頁面配置器所支援的配置粒度,並由記憶體 Clerk 實作。 您可以從記憶體物件要求大於 8 KB 的配置。
範例
下列範例會傳回每個記憶體物件類型所配置的記憶體數量。
SELECT SUM (pages_in_bytes) as 'Bytes Used', type
FROM sys.dm_os_memory_objects
GROUP BY type
ORDER BY 'Bytes Used' DESC;
GO
另請參閱
SQL Server 操作系統相關動態管理檢視 (Transact-SQL)
sys.dm_os_memory_clerks (Transact-SQL)