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


sys.dm_db_xtp_memory_consumers (Transact-SQL)

Сообщает о потребителях памяти уровня базы данных в компоненте Database Engine In-Memory OLTP. Представление возвращает по строке для каждого потребителя памяти, используемого компонентом Database Engine.

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

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2014 до текущей версии).

Имя столбца

Тип данных

Описание

memory_consumer_id

bigint

Идентификатор (внутренний) потребителя памяти.

memory_consumer_type

int

Тип потребителя памяти:

  • 0 = агрегатная функция. (Суммирует использование памяти для двух или более потребителей. Не должен отображаться.)

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

  • 3 = HASH (Отслеживает потребление памяти для индекса.)

  • 5 = пул страниц БД (Отслеживает потребление памяти для пула страниц базы данных, используемого для операций времени выполнения. Например, переменных таблиц и некоторых сериализуемых сканирований. Для одной базы данных существует только один потребитель памяти этого типа.)

memory_consumer_type_desc

nvarchar(64)

Тип потребителя памяти: VARHEAP, HASH или PGPOOL.

  • 0 — (Он не должен отображаться.)

  • 2 — VARHEAP

  • 3 — HASH

  • 5 — PGPOOL

memory_consumer_desc

nvarchar(64)

Описание экземпляра потребителя памяти.

  • VARHEAP

    Куча базы данных. Используется для выделения данных пользователя для базы данных (строк).

    Куча системы базы данных. Используется для выделения данных базы данных, которые будут включены в дампы памяти и не содержат пользовательских данных.

    Куча индекса диапазона. Частная куча, используемая индексом диапазона для выделения страниц BW.

  • HASH

    Описание отсутствует, поскольку object_id указывает на таблицу, а index_id — на сам хэш-индекс.

  • PGPOOL

    Для базы данных есть только один пул страниц Database 64K.

object_id

bigint

Идентификатор объекта, к которому относится выделенная память. Для системных объектов значение отрицательное.

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

Внутренний адрес потребителя памяти. Только для внутреннего применения.

Замечания

На выходе выделения пространства на уровнях базы данных представляют собой пользовательские таблицы, индексы и системные таблицы. VARHEAP с object_id = NULL относится к памяти, выделенной для таблицы со столбцами переменной длины.

Разрешения

Если имеется разрешение VIEW DATABASE STATE в текущей базе данных, возвращаются все строки. В противном случае возвращается пустой набор строк.

Если разрешения VIEW DATABASE нет, возвращаются все столбцы для строк в таблицах, для которых включено разрешение SELECT.

Системные таблицы возвращаются только для пользователей с разрешением VIEW DATABASE STATE.

Примеры

-- memory consumers (database level)
SELECT OBJECT_NAME(object_id), * 
FROM sys.dm_db_xtp_memory_consumers;

Пользовательский сценарий

-- memory consumers (database level)

select  convert(char(10), object_name(object_id)) as Name, 
convert(char(10),memory_consumer_type_desc ) as memory_consumer_type_desc, object_id,index_id, allocated_bytes,  used_bytes 
from sys.dm_db_xtp_memory_consumers

Ниже приводятся выходные данные с подмножеством столбцов. Механизмы распределения памяти на уровнях базы данных — это пользовательские таблицы, индексы и системные таблицы. VARHEAP с object_id = NULL (последняя строка) — это память, выделенная строкам данных в таблицах (в примере ниже это t1). Число выбранных байт, преобразованное в МБ, составляет 1340 МБ.

Name       memory_consumer_type_desc object_id   index_id    allocated_bytes      used_bytes
---------- ------------------------- ----------- ----------- -------------------- --------------------
t3         HASH                      629577281   2           8388608              8388608
t2         HASH                      597577167   2           8388608              8388608
t1         HASH                      565577053   2           1048576              1048576
NULL       HASH                      -6          1           2048                 2048
NULL       VARHEAP                   -6          NULL        0                    0
NULL       HASH                      -5          3           8192                 8192
NULL       HASH                      -5          2           8192                 8192
NULL       HASH                      -5          1           8192                 8192
NULL       HASH                      -4          1           2048                 2048
NULL       VARHEAP                   -4          NULL        0                    0
NULL       HASH                      -3          1           2048                 2048
NULL       HASH                      -2          2           8192                 8192
NULL       HASH                      -2          1           8192                 8192
NULL       VARHEAP                   -2          NULL        196608               26496
NULL       HASH                      0           1           2048                 2048
NULL       PGPOOL                    0           NULL        0                    0
NULL       VARHEAP                   NULL        NULL        1405943808           1231220560

(17 row(s) affected)

Общая память, выделенная и используемая из данного динамического административного представления, идентична общей памяти на уровне объекта в таблице sys.dm_db_xtp_table_memory_stats (Transact-SQL).

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
-------------------- --------------------
1358                 1191

См. также

Основные понятия

Оптимизированные для памяти динамические административные представления таблиц (Transact-SQL)