适用于: SQL Server  
Azure SQL 数据库 
Azure SQL 托管实例
报告内存中 OLTP 数据库引擎中的数据库级内存使用者。 视图为数据库引擎使用的每个内存消耗者返回一行。 使用此 DMV 查看内存如何分布到不同的内部对象。
有关详细信息,请参阅 内存中 OLTP 概述和使用方案。
注意
此系统动态管理视图的输出可能有所不同,具体取决于安装的 SQL Server 版本。
| 列名称 | 数据类型 | 说明 | 
|---|---|---|
memory_consumer_id | 
bigint | 内存消耗者的 ID(内部)。 | 
memory_consumer_type | 
int | 内存消耗者的类型: 0 = 聚合。 (聚合两个或多个使用者的内存使用情况。它不应显示。 2 = VARHEAP (跟踪可变长度堆的内存消耗。3 = HASH (跟踪索引的内存消耗。4 = PGPOOL (DB 页池:跟踪用于运行时操作的数据库页池的内存消耗。例如,表变量和一些可序列化扫描。每个数据库只有一个此类型的内存使用者。 | 
memory_consumer_type_desc | 
nvarchar(64) | 内存使用者的类型: VARHEAP、 HASH或 PGPOOL。0 - (不应显示) 2 - VARHEAP3 - HASH4 - PGPOOL | 
memory_consumer_desc | 
nvarchar(64) | 内存使用者实例的说明。 有关详细信息,请查看下面的表。 | 
object_id | 
bigint | 所分配的内存所属的对象 ID。 负值表示系统对象。 | 
xtp_object_id | 
bigint | 对应于内存优化表的内存中 OLTP 对象 ID。 | 
index_id | 
int | 消耗者的索引 ID(如果有)。 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