Поделиться через


sys.dm_xtp_system_memory_consumers (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

Сообщает потребителям памяти уровня системы для OLTP в памяти. Память для этих потребителей поступает из пула по умолчанию (если выделение находится в контексте потока пользователя) или из внутреннего пула (если выделение находится в контексте системного потока).

SELECT *
FROM sys.dm_xtp_system_memory_consumers;

Дополнительные сведения см. в разделе In-Memory OLTP (оптимизация в памяти).

Имя столбца Тип Описание
memory_consumer_id bigint Внутренний идентификатор потребителя памяти.
memory_consumer_type int Целое число, представляющее тип потребителя памяти с одним из следующих значений:

0 — не должно отображаться. Суммирует использование памяти для двух или более потребителей.

1 — LOOKASIDE (отслеживает потребление памяти для резервного блока памяти системы).

2 — VARHEAP (отслеживает потребление памяти для кучи переменной длины).

4 — пуд страниц ввода-вывода (отслеживает потребление памяти для системного пула страниц, используемого для операций ввода-вывода).
memory_consumer_type_desc nvarchar(16) Описание типа потребителя памяти.

0 — не должно отображаться

1 — LOOKASIDE

2 — VARHEAP

4 — PGPOOL
memory_consumer_desc nvarchar(64) Описание экземпляра потребителя памяти.

VARHEAP:
Системная куча. Общего назначения. В настоящее время используется только для выделения рабочих элементов сборки мусора.
-ИЛИ-
Куча резервного блока памяти. Используется резервными блоками памяти, когда количество элементов в списке достигает определенного предела (обычно около 5000 элементов).

PGPOOL: для системных пулов операций ввода-вывода существует три разных размера: пул страниц System 4K, пул страниц System 64-K и пул страниц System 256 K.
lookaside_id bigint Идентификатор поставщика конкретных потоков локальной памяти резервного блока.
pagepool_id bigint Идентификатор поставщика конкретных потоков локальной памяти пула страниц.
allocated_bytes bigint Число байтов, зарезервированных для этого потребителя памяти.
used_bytes bigint Число байтов, используемых этим потребителем. Применимо только для потребителей памяти varheap.

Начиная с SQL Server 2022 (16.x), применяется к потребителям памяти varheap и lookaside.
allocation_count int Количество выделений.

Начиная с SQL Server 2022 (16.x), количество выделений из системной кучи для потребителей памяти lookaside.
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, оптимизированным для памяти 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