Compartilhar via


sys.dm_db_xtp_memory_consumers (Transact-SQL)

Relata os consumidores de memória no nível de banco de dados no mecanismo de banco de dados OLTP na memória. A exibição retorna uma linha para cada consumidor de memória que o mecanismo de banco de dados usa.

Para obter mais informações, consulte OLTP na memória (otimização na memória).

Aplica-se a: SQL Server (do SQL Server 2014 à versão atual).

Nome da coluna

Tipo de dados

Descrição

memory_consumer_id

bigint

ID (interna) do consumidor de memória.

memory_consumer_type

int

O tipo de consumidor de memória:

  • 0=Agregação. (Agrega o uso de memória de dois ou mais consumidores. Ele não deve ser exibido.)

  • 2=VARHEAP (Rastreia o consumo de memória para um heap de comprimento variável.)

  • 3=HASH (Rastreia o consumo da memória para um índice.)

  • 5=Pool da página do BD (Rastreia o consumo de memória de um pool de página de banco de dados usado em operações de tempo de execução. Por exemplo, as variáveis de tabela e algumas verificações serializáveis. Há apenas um consumidor de memória deste tipo por banco de dados.)

memory_consumer_type_desc

nvarchar(64)

Tipo de consumidor de memória: VARHEAP, HASH ou PGPOOL.

  • 0 – (Não deve ser exibido.)

  • 2 - VARHEAP

  • 3 - HASH

  • 5 - PGPOOL

memory_consumer_desc

nvarchar(64)

Descrição da instância do consumidor de memória:

  • VARHEAP

    Heap do banco de dados. Usado para alocar dados do usuário para um banco de dados (linhas).

    Heap do sistema de banco de dados. Usado para alocar dados do banco de dados que serão incluídos nos despejos de memória e não incluem dados de usuário.

    Heap do índice de intervalo. Heap privado usado pelo índice de intervalo para alocar páginas do BW.

  • HASH

    Nenhuma descrição desde que o object_id indica a tabela e o index_id, o próprio índice de hash.

  • PGPOOL

    Para o banco de dados, há apenas um pool de páginas de banco de dados de 64K.

object_id

bigint

A ID de objeto à qual a memória alocada está atribuída. Um valor negativo de objetos do sistema.

index_id

int

A ID de índice do consumidor (se houver). NULL para tabelas base.

allocated_bytes

bigint

Número de bytes reservados para o consumidor.

used_bytes

bigint

Bytes usados por este consumidor. Aplica-se somente a varheap.

allocation_count

int

Número de alocações.

partition_count

int

Somente para uso interno.

sizeclass_count

int

Somente para uso interno.

min_sizeclass

int

Somente para uso interno.

max_sizeclass

int

Somente para uso interno.

memory_consumer_address

varbinary

Endereço interno do consumidor. Somente para uso interno.

Comentários

Na saída, os alocadores nos níveis de banco de dados fazem referência a tabelas de usuário, índices e tabelas do sistema. VARHEAP com object_id = NULL refere-se à memória alocada para tabelas com colunas de tamanho variável.

Permissões

Todas as linhas são retornadas se você tiver a permissão VIEW DATABASE STATE no banco de dados atual. Caso contrário, um conjunto de linhas vazio será retornado.

Se você não tiver permissão VIEW DATABASE, todas as colunas serão retornadas para as linhas nas tabelas nas quais você tiver permissão SELECT.

As tabelas do sistema são retornadas apenas para usuários com permissão VIEW DATABASE STATE.

Exemplos

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

Cenário de uso

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

Veja a saída com um subconjunto de colunas. Os alocadores nos níveis de banco de dados fazem referência a tabelas de usuário, índices e tabelas do sistema. O VARHEAP com object_id = NULL (a última linha) refere-se à memória alocada a linhas de dados das tabelas (no exemplo a seguir, é t1). Os bytes alocados, quando convertidos para MB, são 1340MB.

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)

A memória total alocada e usada dessa DMV é a mesma que o nível do objeto em 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

Consulte também

Conceitos

Exibições de gerenciamento dinâmico da tabela com otimização de memória (Transact-SQL)