sys.dm_db_xtp_memory_consumers (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure 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, HASHou 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é case activée point. PGPOOL
4K page pool Pool de mémoire utilisé pendant l’activité case activée point. 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