sys.dm_db_xtp_memory_consumers (Transact-SQL)
S’applique à : SQL ServerAzure SQL Database Azure SQL Managed Instance
Signale les consommateurs de mémoire au niveau de la base de données dans le moteur de base de données OLTP en mémoire. La vue retourne une ligne pour chaque consommateur de mémoire que le moteur de base de données utilise. Utilisez cette vue de gestion dynamique pour voir comment la mémoire est distribuée entre différents objets internes.
Pour plus d’informations, consultez la vue d’ensemble d’OLTP en mémoire et les scénarios d’utilisation.
Remarque
La sortie de cette vue de gestion dynamique système peut être différente, selon la version de SQL Server installée.
Nom de la colonne | Type de données | Description |
---|---|---|
memory_consumer_id |
bigint | ID (interne) du consommateur de mémoire. |
memory_consumer_type |
int | Type de consommateur de mémoire : 0 = Agrégation. (Agrège l’utilisation de la mémoire de deux consommateurs ou plus. Elle ne doit pas être affichée.) 2 = VARHEAP (Effectue le suivi de la consommation de mémoire pour un tas de longueur variable.)3 = HASH (Effectue le suivi de la consommation de mémoire pour un index.)4 = PGPOOL (pool de pages de base de données : effectue le suivi de la consommation de mémoire pour un pool de pages de base de données utilisé pour les opérations d’exécution. Par exemple, les variables de table et certaines analyses sérialisables. Il n’existe qu’un seul consommateur de mémoire de ce type par base de données.) |
memory_consumer_type_desc |
nvarchar(64) | Type de consommateur de mémoire : VARHEAP , HASH ou PGPOOL .0 - (Ne doit pas être affiché) 2- VARHEAP 3- HASH 4- PGPOOL |
memory_consumer_desc |
nvarchar(64) | Description de l’instance du consommateur de mémoire. Pour plus d’informations, passez en revue le tableau suivant. |
object_id |
bigint | ID de l'objet auquel la mémoire allouée est attribuée. Valeur négative pour les objets système. |
xtp_object_id |
bigint | ID d’objet OLTP en mémoire qui correspond à la table optimisée en mémoire. |
index_id |
int | ID d'index du consommateur (le cas échéant). NULL pour les tables de base. |
allocated_bytes |
bigint | Nombre d'octets réservés pour ce consommateur. |
used_bytes |
bigint | Octets utilisés par ce consommateur. S’applique uniquement à VARHEAP . |
allocation_count |
int | Nombre d'allocations. |
partition_count |
int | Utilisation interne uniquement. |
sizeclass_count |
int | Utilisation interne uniquement. |
min_sizeclass |
int | Utilisation interne uniquement. |
max_sizeclass |
int | Utilisation interne uniquement. |
memory_consumer_address |
varbinary | Adresse interne du consommateur. Réservé exclusivement à un usage interne. |
Le tableau suivant décrit les consommateurs de mémoire spécifiés dans la memory_consumer_type
colonne :
Consommateur de mémoire | Description | Type |
---|---|---|
256K page pool |
Pool de mémoire utilisé pendant l’activité de point de contrôle. | PGPOOL |
4K page pool |
Pool de mémoire utilisé pendant l’activité de point de contrôle. | PGPOOL |
Checkpoint table |
Utilisation interne uniquement. | VARHEAP |
Ckpt file table |
Utilisation interne uniquement. | VARHEAP |
Ckpt file watermark table |
Utilisation interne uniquement. | VARHEAP |
Database internal heap |
Permet d’allouer des données de base de données incluses dans des vidages de mémoire et n’incluent pas de données utilisateur. | VARHEAP |
Database user heap |
Utilisé pour allouer des données utilisateur à une base de données (lignes). | VARHEAP |
Encryption table |
Utilisation interne uniquement. | VARHEAP |
Hash index |
Effectue le suivi de la consommation de mémoire pour un index. Indique object_id la table et l’index index_id de hachage lui-même. |
HASH |
Large Rows File table |
Utilisation interne uniquement. | VARHEAP |
LOB Page Allocator |
Mémoire du tas utilisée par de grandes lignes. | VARHEAP |
Logical range index partition table |
Utilisation interne uniquement. | VARHEAP |
Logical root fragment table |
Utilisation interne uniquement. | VARHEAP |
Logical Root table |
Utilisation interne uniquement. | VARHEAP |
Logical Sequence Object table |
Utilisation interne uniquement. | VARHEAP |
Physical range index partition table |
Utilisation interne uniquement. | VARHEAP |
Physical root fragment table |
Utilisation interne uniquement. | VARHEAP |
Physical Root table |
Utilisation interne uniquement. | VARHEAP |
Physical Sequence object table |
Utilisation interne uniquement. | VARHEAP |
Range index heap |
Segment de mémoire privé utilisé par l’index de plage pour allouer des pages bw-tree. | VARHEAP |
Storage internal heap |
Utilisation interne uniquement. | VARHEAP |
Storage user heap |
Utilisation interne uniquement. | VARHEAP |
Table heap |
Mémoire du tas utilisée par les tables en mémoire. | VARHEAP |
Tail cache 256K page pool |
Utilisation interne uniquement. | PGPOOL |
Tx Segment table |
Utilisation interne uniquement. | VARHEAP |
Notes
Lorsqu’une table optimisée en mémoire possède un index columnstore, le système utilise certaines tables internes, qui consomment de la mémoire, pour suivre les données de l’index columnstore. Pour plus d’informations sur ces tables internes et les exemples de requêtes montrant leur consommation de mémoire, consultez sys.memory_optimized_tables_internal_attributes (Transact-SQL).
autorisations
Toutes les lignes sont retournées si vous avez l'autorisation VIEW DATABASE STATE sur la base de données active. Sinon, un ensemble de lignes vide est retourné.
Si vous n’avez pas l’autorisation VIEW DATABASE, toutes les colonnes sont retournées pour les lignes des tables sur lesquelles vous disposez de l’autorisation SELECT.
Sur SQL Server 2019 (15.x) et les versions précédentes, les tables système sont retournées uniquement pour les utilisateurs disposant de l’autorisation VIEW DATABASE STATE.
Pour SQL Server 2022 (16.x) et versions ultérieures, vous devez disposer de l’autorisation VIEW DATABASE PERFORMANCE STATE sur la base de données.
Exemples
Interroger les consommateurs de mémoire dans la base de données active
Exécutez la requête suivante sur l’exemple WideWorldImporters
de base de données, qui contient des tables mémoire optimisées :
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;
Voici le jeu de résultats obtenu.
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 mémoire totale allouée et utilisée à partir de cette DMV est identique au niveau de l’objet dans 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;
Voici le jeu de résultats obtenu.
total_allocated_MB total_used_MB
------------------ --------------------
92 51
Contenu connexe
- Introduction aux tables optimisées en mémoire
- Vues de gestion dynamique de table optimisées en mémoire (Transact-SQL)
- Vue d’ensemble et scénarios d’utilisation de l’OLTP en mémoire
- Optimiser les performances à l’aide de technologies en mémoire dans Azure SQL Database
- Optimiser les performances à l’aide de technologies en mémoire dans Azure SQL Managed Instance