sys.dm_xtp_system_memory_consumers (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

报告内存中 OLTP 的系统级内存使用者。 用于这些消耗者的内存来自默认池(在用户线程的背景下分配时)或来自内部池(如果在系统线程的背景下分配)。

SELECT *
FROM sys.dm_xtp_system_memory_consumers;

有关详细信息,请参阅 内存中 OLTP(内存中优化)

列名称 类型 描述
memory_consumer_id bigint 内存消耗者的内部 ID。
memory_consumer_type int 表示内存消耗者类型的整数,具有以下值之一:

0 - 不应显示。 聚合两个或多个使用者的内存使用量。

1 - LOOKASIDE:跟踪系统后备链的内存占用情况。

2 - VARHEAP:跟踪长度可变的堆的内存占用情况。

4 - IO 页池:跟踪用于 IO 操作的系统页池的内存占用情况。
memory_consumer_type_desc nvarchar(16) 对内存消耗者类型的说明:

0 - 不应显示

1 - LOOKASIDE

2 - VARHEAP

4 - PGPOOL
memory_consumer_desc nvarchar(64) 对内存消耗者实例的说明:

VARHEAP:
系统堆。 通用。 当前仅用于分配垃圾收集工作项。
- 或 -
后备链堆。 后备链在后备链表中包含的项目数达到预先确定的上限(通常约 5,000 项)时使用。

PGPOOL:对于 IO 系统池,有三种不同的大小:系统 4K 页池、系统 64-K 页池和 System 256-K 页面池。
lookaside_id bigint 线程本地后备链内存提供程序的 ID。
pagepool_id bigint 线程本地页池内存提供程序的 ID。
allocated_bytes bigint 为此消耗者保留的字节数。
used_bytes bigint 此消耗者使用的字节数。 仅适用于 varheap 内存消耗者。

从 SQL Server 2022(16.x)开始,适用于 varheap 和 lookaside 内存使用者。
allocation_count int 分配的数量。

从 SQL Server 2022 (16.x)开始,系统堆中用于查找内存使用者的分配数。
partition_count int 仅供内部使用。
sizeclass_count int 仅供内部使用。
min_sizeclass int 仅供内部使用。
max_sizeclass int 仅供内部使用。
memory_consumer_address varbinary 消耗者的内部地址。

权限

要求对服务器拥有 VIEW SERVER STATE 权限。

SQL Server 2022 及更高版本的权限

要求对服务器具有 VIEW SERVER PERFORMANCE STATE 权限。

注解

在 SQL Server 2022(16.x)中,此 DMV 具有特定于内存优化 TempDB 元数据内存改进的其他列。

示例

此示例输出 SQL Server 实例的系统内存消耗者:

SELECT memory_consumer_type_desc,
       memory_consumer_desc,
       allocated_bytes / 1024 as allocated_bytes_kb,
       used_bytes / 1024 as used_bytes_kb,
       allocation_count
FROM sys.dm_xtp_system_memory_consumers;

该输出显示系统级别的所有内存消耗者。 例如,存在事务后备链的消耗者。

memory_consumer_type_desc                memory_consumer_desc                           allocated_bytes_kb   used_bytes_kb        allocation_count
-------------------------------          ---------------------                          -------------------  --------------       ----------------
VARHEAP                                  Lookaside heap                                 0                    0                    0
VARHEAP                                  System heap                                    768                  0                    2
LOOKASIDE                                GC transaction map entry                       64                   64                   910
LOOKASIDE                                Redo transaction map entry                     128                  128                  1260
LOOKASIDE                                Recovery table cache entry                     448                  448                  8192
LOOKASIDE                                Transaction recent rows                        3264                 3264                 4444
LOOKASIDE                                Range cursor                                   0                    0                    0
LOOKASIDE                                Hash cursor                                    3200                 3200                 11070
LOOKASIDE                                Transaction save-point set entry               0                    0                    0
LOOKASIDE                                Transaction partially-inserted rows set        704                  704                  1287
LOOKASIDE                                Transaction constraint set                     576                  576                  1940
LOOKASIDE                                Transaction save-point set                     0                    0                    0
LOOKASIDE                                Transaction write set                          704                  704                  672
LOOKASIDE                                Transaction scan set                           320                  320                  156
LOOKASIDE                                Transaction read set                           704                  704                  343
LOOKASIDE                                Transaction                                    4288                 4288                 1459
PGPOOL                                   System 256K page pool                          5120                 5120                 20
PGPOOL                                   System 64K page pool                           0                    0                    0
PGPOOL                                   System 4K page pool                            24                   24                   6

查看由系统分配器占用的总内存:

SELECT SUM(allocated_bytes) / (1024 * 1024) AS total_allocated_MB,
       SUM(used_bytes) / (1024 * 1024) AS total_used_MB
FROM sys.dm_xtp_system_memory_consumers;

下面是结果集。

total_allocated_MB   total_used_MB
-------------------- --------------------
2                    2