sys.dm_db_xtp_memory_consumers (Transact-SQL)
適用於:SQL Server
Azure SQL 資料庫 Azure SQL 受控執行個體
報告記憶體內部 OLTP 資料庫引擎中的資料庫層級記憶體取用者。 檢視會針對資料庫引擎所使用的每個記憶體取用者,傳回一個數據列。 使用此 DMV 來查看記憶體如何分散到不同的內部物件。
如需詳細資訊,請參閱 記憶體內部 OLTP 概觀和使用案例。
注意
視安裝的 SQL Server 版本而定,此系統動態管理檢視的輸出可能會不同。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
memory_consumer_id |
bigint | 記憶體取用者的標識碼(內部)。 |
memory_consumer_type |
int | 記憶體取用者的類型: 0 = 匯總。 (匯總兩個或多個取用者的記憶體使用量。它不應該顯示。 2 = VARHEAP (追蹤可變長度堆積的記憶體耗用量。)3 = HASH (追蹤索引的記憶體耗用量。4 = PGPOOL (資料庫頁面集區:追蹤用於運行時間作業的資料庫頁面集區的記憶體耗用量。例如,數據表變數和一些可串行化的掃描。每個資料庫只有一個此類型的記憶體取用者。 |
memory_consumer_type_desc |
nvarchar(64) | 記憶體取用者的類型: VARHEAP 、 HASH 或 PGPOOL 。0 - (不應該顯示) 2- VARHEAP 3- HASH 4- PGPOOL |
memory_consumer_desc |
nvarchar(64) | 記憶體取用者實例的描述。 如需詳細資訊,請檢閱下列數據表。 |
object_id |
bigint | 配置記憶體屬性的物件識別碼。 系統物件的負值。 |
xtp_object_id |
bigint | 對應至記憶體優化數據表的記憶體內部 OLTP 物件標識碼。 |
index_id |
int | 取用者的索引標識碼(如果有的話)。 基表的 NULL。 |
allocated_bytes |
bigint | 保留給這個取用者的位元元組數目。 |
used_bytes |
bigint | 這個取用者所使用的位元組。 只適用於 VARHEAP 。 |
allocation_count |
int | 配置數目。 |
partition_count |
int | 僅供內部使用。 |
sizeclass_count |
int | 僅供內部使用。 |
min_sizeclass |
int | 僅供內部使用。 |
max_sizeclass |
int | 僅供內部使用。 |
memory_consumer_address |
varbinary | 取用者的內部位址。 僅限內部使用。 |
下表描述資料列中指定的 memory_consumer_type
記憶體取用者:
記憶體取用者 | 描述 | 類型 |
---|---|---|
256K page pool |
檢查點活動期間使用的記憶體集區。 | PGPOOL |
4K page pool |
檢查點活動期間使用的記憶體集區。 | PGPOOL |
Checkpoint table |
僅供內部使用。 | VARHEAP |
Ckpt file table |
僅供內部使用。 | VARHEAP |
Ckpt file watermark table |
僅供內部使用。 | VARHEAP |
Database internal heap |
用來配置記憶體轉儲中包含的資料庫數據,且不包含用戶數據。 | VARHEAP |
Database user heap |
用來配置資料庫的用戶數據(數據列)。 | VARHEAP |
Encryption table |
僅供內部使用。 | VARHEAP |
Hash index |
追蹤索引的記憶體耗用量。 object_id 表示資料表與index_id 哈希索引本身的 。 |
HASH |
Large Rows File table |
僅供內部使用。 | VARHEAP |
LOB Page Allocator |
大型數據列所使用的堆積記憶體。 | VARHEAP |
Logical range index partition table |
僅供內部使用。 | VARHEAP |
Logical root fragment table |
僅供內部使用。 | VARHEAP |
Logical Root table |
僅供內部使用。 | VARHEAP |
Logical Sequence Object table |
僅供內部使用。 | VARHEAP |
Physical range index partition table |
僅供內部使用。 | VARHEAP |
Physical root fragment table |
僅供內部使用。 | VARHEAP |
Physical Root table |
僅供內部使用。 | VARHEAP |
Physical Sequence object table |
僅供內部使用。 | VARHEAP |
Range index heap |
範圍索引用來配置 Bw 樹狀目錄頁面的私人堆積。 | VARHEAP |
Storage internal heap |
僅供內部使用。 | VARHEAP |
Storage user heap |
僅供內部使用。 | VARHEAP |
Table heap |
記憶體內部數據表所使用的堆積記憶體。 | VARHEAP |
Tail cache 256K page pool |
僅供內部使用。 | PGPOOL |
Tx Segment table |
僅供內部使用。 | VARHEAP |
備註
當記憶體優化數據表具有數據行存放區索引時,系統會使用一些內部數據表來追蹤數據行存放區索引的數據。 如需這些內部資料表及其記憶體耗用量的範例查詢詳細資訊,請參閱 sys.memory_optimized_tables_internal_attributes (Transact-SQL) 。
權限
如果您有目前資料庫的 VIEW DATABASE STATE 許可權,則會傳回所有數據列。 否則會傳回空的數據列集。
如果您沒有 VIEW DATABASE 許可權,則會針對您具有 SELECT 許可權之數據表中的數據列傳回所有數據行。
在 SQL Server 2019 (15.x) 和舊版上,系統數據表只會針對具有 VIEW DATABASE STATE 許可權的用戶傳回。
針對 SQL Server 2022 (16.x) 和更新版本,您需要資料庫的 VIEW DATABASE PERFORMANCE STATE 許可權。
範例
查詢目前資料庫中的記憶體取用者
針對包含記憶體優化數據表的範例 WideWorldImporters
資料庫執行下列查詢:
SELECT CONVERT(CHAR(10), OBJECT_NAME(object_id)) AS Name,
memory_consumer_type_desc,
memory_consumer_desc,
object_id,
index_id,
allocated_bytes,
used_bytes
FROM sys.dm_db_xtp_memory_consumers;
以下為結果集。
Name memory_consumer_type_desc memory_consumer_desc object_id index_id allocated_bytes used_bytes
---------- ------------------------- -------------------------------------- ----------- ----------- ----------------- ------------
NULL VARHEAP Range index heap -15 1 131072 176
NULL VARHEAP Physical range index partition table -15 NULL 0 0
NULL VARHEAP Range index heap -14 2 131072 192
NULL VARHEAP Range index heap -14 1 131072 208
NULL VARHEAP Large Rows File table -14 NULL 0 0
NULL HASH Hash index -13 1 2048 2048
NULL VARHEAP Encryption table -13 NULL 0 0
NULL HASH Hash index -10 2 32768 32768
NULL HASH Hash index -10 1 32768 32768
NULL VARHEAP Tx Segment table -10 NULL 65536 544
NULL HASH Hash index -11 1 32768 32768
NULL VARHEAP Checkpoint table -11 NULL 131072 320
NULL HASH Hash index -12 1 8192 8192
NULL VARHEAP Ckpt file table -12 NULL 131072 3120
NULL HASH Hash index -9 1 2048 2048
NULL VARHEAP Ckpt file watermark table -9 NULL 131072 1280
NULL VARHEAP Range index heap -7 1 262144 976
NULL VARHEAP Physical Sequence Object table -7 NULL 65536 864
NULL HASH Hash index -3 1 2048 2048
NULL VARHEAP Physical root fragment table -3 NULL 0 0
NULL HASH Hash index 0 2 8192 8192
NULL HASH Hash index 0 1 32768 32768
NULL VARHEAP Physical Root table NULL NULL 327680 12160
NULL PGPOOL Tail cache 256K page pool 0 NULL 262144 262144
NULL PGPOOL 256K page pool 0 NULL 35389440 18874368
NULL PGPOOL 64K page pool 0 NULL 131072 65536
NULL PGPOOL 4K page pool 0 NULL 49152 40960
NULL VARHEAP Storage internal heap NULL NULL 786432 4816
NULL VARHEAP Storage user heap NULL NULL 262144 22496
ColdRoomTe VARHEAP Range index heap 1179151246 3 196608 800
ColdRoomTe VARHEAP Range index heap 1179151246 2 196608 800
memory_opt VARHEAP Range index heap 1211151360 2 131072 208
VehicleTem VARHEAP Range index heap 1243151474 2 11796480 1181824
ColdRoomTe VARHEAP Table heap 1179151246 NULL 65536 384
memory_opt VARHEAP Table heap 1211151360 NULL 0 0
VehicleTem VARHEAP Table heap 1243151474 NULL 33423360 32802112
VehicleTem VARHEAP Range index heap 1243151474 2 131072 160
VehicleTem VARHEAP LOB Page Allocator 1243151474 NULL 0 0
VehicleTem VARHEAP Table heap 1243151474 NULL 0 0
NULL VARHEAP Range index heap -15 1 327680 176
NULL VARHEAP Logical range index partition table -15 NULL 0 0
NULL HASH Hash index -7 1 32768 32768
NULL VARHEAP Logical Sequence Object table -7 NULL 65536 600
NULL HASH Hash index -3 1 2048 2048
NULL VARHEAP Logical root fragment table -3 NULL 0 0
NULL HASH Hash index 0 1 32768 32768
NULL VARHEAP Logical Root table NULL NULL 327680 11120
NULL PGPOOL Tail cache 256K page pool 0 NULL 262144 0
NULL PGPOOL 256K page pool 0 NULL 10485760 0
NULL PGPOOL 64K page pool 0 NULL 131072 0
NULL PGPOOL 4K page pool 0 NULL 32768 0
NULL VARHEAP Database internal heap NULL NULL 1048576 8016
NULL VARHEAP Database user heap NULL NULL 65536 1024
從這個 DMV 配置和使用的總記憶體,與sys.dm_db_xtp_table_memory_stats中的物件層級相同。
SELECT SUM(allocated_bytes) / (1024 * 1024) AS total_allocated_MB,
SUM(used_bytes) / (1024 * 1024) AS total_used_MB
FROM sys.dm_db_xtp_memory_consumers;
以下為結果集。
total_allocated_MB total_used_MB
------------------ --------------------
92 51