sys.dm_os_memory_objects (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Retourne des objets mémoire actuellement alloués par SQL Server. Vous pouvez utiliser sys.dm_os_memory_objects pour analyser l’utilisation de la mémoire et identifier les fuites de mémoire possibles.

Remarque

Pour appeler cela à partir d’Azure Synapse Analytics ou du système de plateforme d’analyse (PDW), utilisez le nom sys.dm_pdw_nodes_os_memory_objects. Cette syntaxe n’est pas prise en charge par le pool SQL serverless dans Azure Synapse Analytics.

Nom de la colonne Type de données Description
memory_object_address varbinary(8) Adresse de l'objet mémoire. N'accepte pas la valeur NULL.
parent_address varbinary(8) Adresse de l'objet mémoire parent. Autorise la valeur NULL.
pages_allocated_count int S’applique à : SQL Server 2008 (10.0.x) à SQL Server 2008 R2 (10.50.x).

Nombre de pages allouées par cet objet. N'accepte pas la valeur NULL.
pages_in_bytes bigint S’applique à : SQL Server 2012 (11.x) et versions ultérieures.

Quantité de mémoire, en octets, allouée par cette instance de l'objet mémoire. N'accepte pas la valeur NULL.
creation_options int Utilisation interne uniquement. Autorise la valeur NULL.
bytes_used bigint Utilisation interne uniquement. Autorise la valeur NULL.
type nvarchar(60) Type d'objet mémoire.

Indique le composant auquel cet objet mémoire appartient ou la fonction de l'objet mémoire. Autorise la valeur NULL.
nom varchar(128) Utilisation interne uniquement. Autorise la valeur Null.
memory_node_id smallint ID d'un nœud de mémoire utilisé par cet objet mémoire. N'accepte pas la valeur NULL.
creation_time datetime Utilisation interne uniquement. Autorise la valeur NULL.
max_pages_allocated_count int S’applique à : SQL Server 2008 (10.0.x) à SQL Server 2008 R2 (10.50.x).

Nombre maximum de pages allouées par cet objet mémoire. N'accepte pas la valeur NULL.
page_size_in_bytes int S’applique à : SQL Server 2012 (11.x) et versions ultérieures.

Taille des pages, en octets, allouée par cet objet. N'accepte pas la valeur NULL.
max_pages_in_bytes bigint Quantité de mémoire maximale utilisée par cet objet mémoire. N'accepte pas la valeur NULL.
page_allocator_address varbinary(8) Adresse mémoire de l'allocateur de page. N'accepte pas la valeur NULL. Pour plus d’informations, consultez sys.dm_os_memory_clerks (Transact-SQL).
creation_stack_address varbinary(8) Utilisation interne uniquement. Autorise la valeur NULL.
sequence_num int Utilisation interne uniquement. Autorise la valeur NULL.
partition_type int S’applique à : SQL Server 2016 (13.x) et versions ultérieures.

Type de partition :

0 - Objet mémoire non partitionnable

1 - Objet mémoire partitionnable, actuellement non partitionné

2 - Objet mémoire partitionnable, partitionné par nœud NUMA. Dans un environnement avec un seul nœud NUMA, cela équivaut à 1.

3 - Objet mémoire partitionnable, partitionné par processeur.
contention_factor real S’applique à : SQL Server 2016 (13.x) et versions ultérieures.

Valeur spécifiant la contention sur cet objet mémoire, avec 0 signification aucune contention. La valeur est mise à jour chaque fois qu’un nombre spécifié d’allocations de mémoire ont été effectuées reflétant la contention pendant cette période. S’applique uniquement aux objets de mémoire thread-safe.
waiting_tasks_count bigint S’applique à : SQL Server 2016 (13.x) et versions ultérieures.

Nombre d’attentes sur cet objet mémoire. Ce compteur est incrémenté chaque fois que la mémoire est allouée à partir de cet objet mémoire. L’incrément est le nombre de tâches en attente d’accès à cet objet mémoire. S’applique uniquement aux objets de mémoire thread-safe. Il s’agit d’une meilleure valeur d’effort sans garantie d’exactitude.
exclusive_access_count bigint S’applique à : SQL Server 2016 (13.x) et versions ultérieures.

Spécifie la fréquence à laquelle cet objet mémoire a été accédé exclusivement. S’applique uniquement aux objets de mémoire thread-safe. Il s’agit d’une meilleure valeur d’effort sans garantie d’exactitude.
pdw_node_id int S’applique à : Azure Synapse Analytics, Analytics Platform System (PDW)

Identificateur du nœud sur lequel cette distribution est activée.

partition_type, contention_factor, waiting_tasks_count et exclusive_access_count ne sont pas encore implémentés dans SQL Database.

autorisations

Sur SQL Server et SQL Managed Instance, l’autorisation VIEW SERVER STATE est requise.

Sur les objectifs de service SQL Database Basic, S0 et S1, et pour les bases de données dans des pools élastiques, le compte d’administrateur du serveur, le compte d’administrateur Microsoft Entra ou l’appartenance au ##MS_ServerStateReader## rôle serveur est requis. Sur tous les autres objectifs de service SQL Database, l’autorisation VIEW DATABASE STATE sur la base de données ou l’appartenance au rôle serveur ##MS_ServerStateReader## est requise.

Autorisations pour SQL Server 2022 (et versions plus récentes)

Nécessite l’autorisation VIEW SERVER PERFORMANCE STATE sur le serveur.

Notes

Les objets mémoire sont des segments. Ils fournissent des allocations qui ont une granularité plus fine que celles fournies par les régisseurs de mémoire. Les composants SQL Server utilisent des objets mémoire plutôt que des commis de mémoire. Les objets mémoire utilisent l'interface d'allocation de page du régisseur de mémoire pour allouer les pages. Ils n'utilisent pas les interfaces de mémoire virtuelle ou partagée. Selon les modèles d'allocation, les composants peuvent créer différents types d'objets mémoire pour allouer des régions de taille arbitraire.

La taille de page type pour un objet mémoire est de 8 Ko. Toutefois, les objets mémoire incrémentiels peuvent avoir des tailles de page allant de 512 octets à 8 Ko.

Remarque

La taille de page n'est pas une allocation maximale. Il s'agit en fait de granularité d'allocation prise en charge par un allocateur de page et mise en œuvre par un régisseur de mémoire. Vous pouvez demander des allocations supérieures à 8 Ko d'objets mémoire.

Exemples

L'exemple suivant retourne la quantité de mémoire allouée par chaque type d'objet mémoire.

SELECT SUM (pages_in_bytes) as 'Bytes Used', type   
FROM sys.dm_os_memory_objects  
GROUP BY type   
ORDER BY 'Bytes Used' DESC;  
GO  

Voir aussi

Vues de gestion dynamique SQL Server liées au système d'exploitation (Transact-SQL)
sys.dm_os_memory_clerks (Transact-SQL)