sys.dm_db_xtp_memory_consumers (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
Relata os consumidores de memória no nível do banco de dados no mecanismo de banco de dados OLTP in-memory. A exibição retorna uma linha para cada consumidor de memória que o mecanismo de banco de dados usa. Use essa DMV para ver como a memória é distribuída entre diferentes objetos internos.
Para obter mais informações, consulte Visão geral do OLTP in-memory e cenários de uso.
Observação
A saída dessa exibição de gerenciamento dinâmico do sistema pode ser diferente, dependendo da versão do SQL Server instalada.
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 de memória de um índice.)4 = PGPOOL (pool de páginas do banco de dados: rastreia o consumo de memória de um pool de páginas do banco de dados usado para operações de tempo de execução. Por exemplo, variáveis de tabela e algumas verificações serializáveis. Há apenas um consumidor de memória desse 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 4- PGPOOL |
memory_consumer_desc |
nvarchar(64) | Descrição da instância do consumidor de memória. Para obter mais informações, examine a tabela a seguir. |
object_id |
bigint | A ID de objeto à qual a memória alocada está atribuída. Um valor negativo de objetos do sistema. |
xtp_object_id |
bigint | A ID do objeto OLTP in-memory que corresponde à tabela com otimização de memória. |
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 apenas 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. |
A tabela a seguir descreve os consumidores de memória especificados na memory_consumer_type
coluna:
Consumidor de memória | Descrição | Type |
---|---|---|
256K page pool |
Pool de memória usado durante a atividade de ponto de verificação. | PGPOOL |
4K page pool |
Pool de memória usado durante a atividade de ponto de verificação. | PGPOOL |
Checkpoint table |
Somente para uso interno. | VARHEAP |
Ckpt file table |
Somente para uso interno. | VARHEAP |
Ckpt file watermark table |
Somente para uso interno. | VARHEAP |
Database internal heap |
Usado para alocar dados de banco de dados incluídos em despejos de memória e não incluem dados do usuário. | VARHEAP |
Database user heap |
Usado para alocar dados do usuário para um banco de dados (linhas). | VARHEAP |
Encryption table |
Somente para uso interno. | VARHEAP |
Hash index |
Controla o consumo de memória de um índice. O object_id indica a tabela e o index_id do próprio índice de hash. |
HASH |
Large Rows File table |
Somente para uso interno. | VARHEAP |
LOB Page Allocator |
Memória de heap usada por linhas grandes. | VARHEAP |
Logical range index partition table |
Somente para uso interno. | VARHEAP |
Logical root fragment table |
Somente para uso interno. | VARHEAP |
Logical Root table |
Somente para uso interno. | VARHEAP |
Logical Sequence Object table |
Somente para uso interno. | VARHEAP |
Physical range index partition table |
Somente para uso interno. | VARHEAP |
Physical root fragment table |
Somente para uso interno. | VARHEAP |
Physical Root table |
Somente para uso interno. | VARHEAP |
Physical Sequence object table |
Somente para uso interno. | VARHEAP |
Range index heap |
Heap privado usado pelo índice de intervalo para alocar páginas da árvore Bw. | VARHEAP |
Storage internal heap |
Somente para uso interno. | VARHEAP |
Storage user heap |
Somente para uso interno. | VARHEAP |
Table heap |
Memória heap usada por tabelas na memória. | VARHEAP |
Tail cache 256K page pool |
Somente para uso interno. | PGPOOL |
Tx Segment table |
Somente para uso interno. | VARHEAP |
Comentários
Quando uma tabela com otimização de memória tem um índice columnstore, o sistema usa algumas tabelas internas, que consomem alguma memória, para controlar dados para o índice columnstore. Para obter detalhes sobre essas tabelas internas e consultas de exemplo que mostram seu consumo de memória, consulte sys.memory_optimized_tables_internal_attributes (Transact-SQL).
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 a permissão VIEW DATABASE, todas as colunas serão retornadas para linhas em tabelas nas quais você tem a permissão SELECT.
No SQL Server 2019 (15.x) e versões anteriores, as tabelas do sistema são retornadas apenas para usuários com a permissão VIEW DATABASE STATE.
Para SQL Server 2022 (16.x) e versões posteriores, você precisa da permissão VIEW DATABASE PERFORMANCE STATE no banco de dados.
Exemplos
Consumidores de memória de consulta no banco de dados atual
Execute a seguinte consulta no banco de dados de exemplo WideWorldImporters
, que contém tabelas com otimização de memória:
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;
Veja a seguir o conjunto de resultados.
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
A memória total alocada e usada dessa DMV é igual ao nível do objeto em 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;
Veja a seguir o conjunto de resultados.
total_allocated_MB total_used_MB
------------------ --------------------
92 51
Conteúdo relacionado
- Introdução às tabelas com otimização de memória
- Exibições de gerenciamento dinâmico de tabela com otimização de memória (Transact-SQL)
- Visão geral e cenários de uso do OLTP in-memory
- Otimizar o desempenho usando tecnologias na memória no Banco de Dados SQL do Azure
- Otimizar o desempenho usando tecnologias na memória na Instância Gerenciada de SQL do Azure