sys.dm_db_xtp_memory_consumers (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Сообщает потребителям памяти уровня базы данных в ядре СУБД OLTP в памяти. Представление возвращает по строке для каждого потребителя памяти, используемого компонентом Database Engine. Используйте этот dmV, чтобы узнать, как память распределяется между различными внутренними объектами.
Дополнительные сведения см . в обзоре и сценариях использования OLTP в памяти.
Примечание.
Выходные данные этого динамического административного представления системы могут отличаться в зависимости от установленной версии SQL Server.
Имя столбца | Тип данных | Description |
---|---|---|
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 |
Замечания
Если в оптимизированной для памяти таблице есть индекс columnstore, система использует некоторые внутренние таблицы, которые используют некоторую память для отслеживания данных индекса columnstore. Дополнительные сведения об этих внутренних таблицах и примерах запросов, показывающих потребление памяти, см. в 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
Общая память, выделенная и используемая этим динамическим представлением, совпадает с уровнем объекта в 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
Связанный контент
- Введение в таблицы, оптимизированные для памяти
- Динамические административные представления таблиц с оптимизированной для памяти таблицей (Transact-SQL)
- Обзор и сценарии использования OLTP в памяти
- Оптимизация производительности с помощью технологий в памяти в База данных SQL Azure
- Оптимизация производительности с помощью технологий в памяти в Управляемый экземпляр SQL Azure