sys.dm_db_xtp_memory_consumers (Transact-SQL)
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure
Segnala i consumer di memoria a livello di database nel motore di database OLTP in memoria. Nella vista viene restituita una riga per ogni consumer di memoria utilizzato dal motore di database. Usare questa DMV per vedere come la memoria viene distribuita tra diversi oggetti interni.
Per altre informazioni, vedere Panoramica oltp in memoria e scenari di utilizzo.
Nota
L'output di questa vista a gestione dinamica del sistema può essere diverso, a seconda della versione di SQL Server installata.
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
memory_consumer_id |
bigint | ID interno del consumer di memoria. |
memory_consumer_type |
int | Tipo di consumer di memoria: 0 = Aggregazione. Aggrega l'utilizzo della memoria di due o più consumer. Non dovrebbe essere visualizzato. 2 = VARHEAP (tiene traccia del consumo di memoria per un heap a lunghezza variabile).3 = HASH (Tiene traccia dell'utilizzo della memoria per un indice).4 = PGPOOL (pool di pagine del database: tiene traccia del consumo di memoria per un pool di pagine di database usato per le operazioni di runtime. Ad esempio, variabili di tabella e alcune analisi serializzabili. Esiste un solo consumer di memoria di questo tipo per ogni database. |
memory_consumer_type_desc |
nvarchar(64) | Tipo di consumer di memoria: VARHEAP , HASH o PGPOOL .0 - (non dovrebbe essere visualizzato) 2- VARHEAP 3- HASH 4- PGPOOL |
memory_consumer_desc |
nvarchar(64) | Descrizione dell'istanza del consumer di memoria. Per altre informazioni, vedere la tabella seguente. |
object_id |
bigint | ID oggetto a cui è attribuita la memoria allocata. Un valore negativo per gli oggetti di sistema. |
xtp_object_id |
bigint | ID oggetto OLTP in memoria che corrisponde alla tabella ottimizzata per la memoria. |
index_id |
int | ID dell'indice del consumer, se disponibile. NULL per le tabelle di base. |
allocated_bytes |
bigint | Numero di byte riservati al consumer. |
used_bytes |
bigint | Byte utilizzati dal consumer. Si applica solo a VARHEAP . |
allocation_count |
int | Numero di allocazioni. |
partition_count |
int | Solo per uso interno. |
sizeclass_count |
int | Solo per uso interno. |
min_sizeclass |
int | Solo per uso interno. |
max_sizeclass |
int | Solo per uso interno. |
memory_consumer_address |
varbinary | Indirizzo interno del consumer. Solo per uso interno. |
Nella tabella seguente vengono descritti i consumer di memoria specificati nella memory_consumer_type
colonna :
Consumer di memoria | Descrizione | Tipo |
---|---|---|
256K page pool |
Pool di memoria usato durante l'attività del checkpoint. | PGPOOL |
4K page pool |
Pool di memoria usato durante l'attività del checkpoint. | PGPOOL |
Checkpoint table |
Solo per uso interno. | VARHEAP |
Ckpt file table |
Solo per uso interno. | VARHEAP |
Ckpt file watermark table |
Solo per uso interno. | VARHEAP |
Database internal heap |
Usato per allocare i dati del database inclusi nei dump della memoria e non includere i dati utente. | VARHEAP |
Database user heap |
Utilizzo per allocare i dati utente per un database (righe). | VARHEAP |
Encryption table |
Solo per uso interno. | VARHEAP |
Hash index |
Tiene traccia del consumo di memoria per un indice. Indica object_id la tabella e l'oggetto index_id dell'indice hash stesso. |
HASH |
Large Rows File table |
Solo per uso interno. | VARHEAP |
LOB Page Allocator |
Memoria heap usata da righe di grandi dimensioni. | VARHEAP |
Logical range index partition table |
Solo per uso interno. | VARHEAP |
Logical root fragment table |
Solo per uso interno. | VARHEAP |
Logical Root table |
Solo per uso interno. | VARHEAP |
Logical Sequence Object table |
Solo per uso interno. | VARHEAP |
Physical range index partition table |
Solo per uso interno. | VARHEAP |
Physical root fragment table |
Solo per uso interno. | VARHEAP |
Physical Root table |
Solo per uso interno. | VARHEAP |
Physical Sequence object table |
Solo per uso interno. | VARHEAP |
Range index heap |
Heap privato usato dall'indice di intervallo per allocare pagine albero Bw. | VARHEAP |
Storage internal heap |
Solo per uso interno. | VARHEAP |
Storage user heap |
Solo per uso interno. | VARHEAP |
Table heap |
Memoria heap usata dalle tabelle in memoria. | VARHEAP |
Tail cache 256K page pool |
Solo per uso interno. | PGPOOL |
Tx Segment table |
Solo per uso interno. | VARHEAP |
Osservazioni:
Quando una tabella ottimizzata per la memoria ha un indice columnstore, il sistema usa alcune tabelle interne, che utilizzano memoria, per tenere traccia dei dati per l'indice columnstore. Per informazioni dettagliate su queste tabelle interne e query di esempio che mostrano il consumo di memoria, vedere sys.memory_optimized_tables_internal_attributes (Transact-SQL).For details about these internal tables and sample queries showing their memory consumption, see sys.memory_optimized_tables_internal_attributes (Transact-SQL).
Autorizzazioni
Vengono restituite tutte le righe se si dispone dell'autorizzazione VIEW DATABASE STATE per il database corrente. In caso contrario, viene restituito un set di righe vuoto.
Se non si dispone dell'autorizzazione VIEW DATABASE, vengono restituite tutte le colonne per le righe nelle tabelle per cui si dispone dell'autorizzazione SELECT.
In SQL Server 2019 (15.x) e nelle versioni precedenti, le tabelle di sistema vengono restituite solo per gli utenti con autorizzazione VIEW DATABASE STATE.
Per SQL Server 2022 (16.x) e versioni successive, è necessaria l'autorizzazione VIEW DATABASE PERFORMANCE STATE per il database.
Esempi
Eseguire query sui consumer di memoria nel database corrente
Eseguire la query seguente sul database di esempio WideWorldImporters
, che contiene tabelle ottimizzate per la memoria:
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;
Il set di risultati è il seguente.
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
La memoria totale allocata e usata da questa DMV è uguale al livello di oggetto in 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;
Il set di risultati è il seguente.
total_allocated_MB total_used_MB
------------------ --------------------
92 51
Contenuto correlato
- Introduzione alle tabelle con ottimizzazione per la memoria
- Viste a gestione dinamica delle tabelle ottimizzate per la memoria (Transact-SQL)
- Panoramica di OLTP in memoria e scenari di utilizzo
- Ottimizzare le prestazioni usando tecnologie in memoria in database SQL di Azure
- Ottimizzare le prestazioni usando tecnologie in memoria in Istanza gestita di SQL di Azure