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 les pools élastiques, le compte d’administration du serveur, le compte d’administration Microsoft Entra ou l’appartenance dans ##MS_ServerStateReader##
au rôle de 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)