sys.dm_db_xtp_memory_consumers (Transact-SQL)

适用于: 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) 内存使用者的类型: VARHEAPHASHPGPOOL

0 - (不应显示)
2 - VARHEAP
3 - HASH
4 - 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