Partager via


sys.dm_os_out_of_memory_events

S’applique à :Azure SQL DatabaseAzure SQL Managed InstanceBase de données SQL dans Microsoft Fabric

Retourne un ensemble d’événements de mémoire insuffisante (OOM) récents.

Pour plus d’informations sur les conditions de mémoire insuffisante dans Azure SQL Database, consultez Résoudre les erreurs de mémoire insuffisante dans Azure SQL Database.

Nom de la colonne Type de données Descriptif
event_time datetime Heure de l’événement OOM. Ne peut pas accepter la valeur Null.
oom_cause tinyint Valeur numérique indiquant la cause racine OOM. La cause OOM est déterminée par un algorithme heuristique et est fournie avec un degré fini de confiance. Ne peut pas accepter la valeur Null.
oom_cause_desc nvarchar(30) Description de oom_cause. Ne peut pas accepter la valeur Null.
0. UNKNOWN - La cause OOM n’a pas pu être déterminée
1. HEKATON_POOL_MEMORY_LOW - Mémoire insuffisante dans le pool de ressources utilisé pour OLTP en mémoire. Pour plus d’informations, consultez Monitor In-Memory OLTP.
2. MEMORY_LOW - Mémoire insuffisante disponible pour le processus du moteur de base de données
3. OS_MEMORY_PRESSURE - OOM en raison de la pression de mémoire externe du système d’exploitation
4. OS_MEMORY_PRESSURE_SQL - OOM en raison de la pression de mémoire externe provenant d’autres instances du moteur de base de données
5. NON_SOS_MEMORY_LEAK - OOM en raison d’une fuite de mémoire non-SOS, par exemple, des modules chargés
6. SERVERLESS_MEMORY_RECLAMATION - OOM lié à la récupération de la mémoire dans une base de données serverless
7. MEMORY_LEAK - OOM en raison d’une fuite dans la mémoire SOS
8. SLOW_BUFFER_POOL_SHRINK - OOM en raison du pool de mémoires tampons qui ne libère pas suffisamment de mémoire rapidement sous pression mémoire
9. INTERNAL_POOL - Mémoire insuffisante dans le pool de ressources interne
10. SYSTEM_POOL - Mémoire insuffisante dans un pool de ressources système
11. QUERY_MEMORY_GRANTS - OOM en raison d’allocations de mémoire volumineuses détenues par les requêtes
12. REPLICAS_AND_AVAILABILITY - OOM en raison de charges de travail dans le pool de ressources SloSecSharedPool
available_physical_memory_mb Int Mémoire physique disponible, en mégaoctets. Ne peut pas accepter la valeur Null.
initial_job_object_memory_limit_mb Int Limite de mémoire de l’objet de travail au démarrage du moteur de base de données, en mégaoctets. Pour plus d’informations sur les objets de travail, consultez Gouvernance des ressources. Pouvant accepter la valeur Null.
current_job_object_memory_limit_mb Int Limite de mémoire actuelle de l’objet de travail, en mégaoctets. Pouvant accepter la valeur Null.
process_memory_usage_mb Int Utilisation totale de la mémoire du processus en mégaoctets par l’instance. Ne peut pas accepter la valeur Null.
non_sos_memory_usage_mb Int Utilisation non-SOS en mégaoctets, y compris les threads créés par SOS, les threads créés par des composants non-SOS, les DLL chargées, etc. N’est pas nullable.
committed_memory_target_mb Int Mémoire cible SOS en mégaoctets. Ne peut pas accepter la valeur Null.
committed_memory_mb Int Mémoire validée SOS en mégaoctets. Ne peut pas accepter la valeur Null.
allocation_potential_memory_mb Int Mémoire disponible pour l’instance du moteur de base de données pour les nouvelles allocations, en mégaoctets. Ne peut pas accepter la valeur Null.
oom_factor tinyint Valeur qui fournit des informations supplémentaires relatives à l’événement OOM, pour une utilisation interne uniquement. Ne peut pas accepter la valeur Null.
oom_factor_desc nvarchar(30) Description de oom_factor. Réservé exclusivement à un usage interne. Ne peut pas accepter la valeur Null.
0 - UNDEFINED
1 - ALLOCATION_POTENTIAL
2 - BLOCK_ALLOCATOR
3 - ESCAPE_TIMEOUT
4 - FAIL_FAST
5 - MEMORY_POOL
6 - EMERGENCY_ALLOCATOR
7 - VIRTUAL_ALLOC
8 - SIMULATED
9 - BUF_ALLOCATOR
10 - QUERY_MEM_QUEUE
11 - FRAGMENT
12 - INIT_DESCRIPTOR
13 - MEMORY_POOL_PRESSURE
14 - DESCRIPTOR_ALLOCATOR
15 - DESCRIPTOR_ALLOCATOR_ESCAPE
oom_resource_pools nvarchar(4000) Pools de ressources hors mémoire, y compris les statistiques d’utilisation de la mémoire pour chaque pool. Ces informations sont fournies sous forme de valeur JSON. Pouvant accepter la valeur Null.
top_memory_clerks nvarchar(4000) Principaux commis de mémoire par consommation de mémoire, y compris les statistiques d’utilisation de la mémoire pour chaque commis. Ces informations sont fournies sous forme de valeur JSON. Pouvant accepter la valeur Null.
top_resource_pools nvarchar(4000) Principaux pools de ressources par consommation de mémoire, y compris les statistiques d’utilisation de la mémoire pour chaque pool de ressources. Ces informations sont fournies sous forme de valeur JSON. Pouvant accepter la valeur Null.
possible_leaked_memory_clerks nvarchar(4000) Commis de mémoire qui ont fui la mémoire. Basé sur l’heuristique et fourni avec un degré fini de confiance. Ces informations sont fournies sous forme de valeur JSON. Pouvant accepter la valeur Null.
possible_non_sos_leaked_memory_mb Int Mémoire non SOS divulguée en mégaoctets, le cas échéant. Basé sur l’heuristique et fourni avec un degré fini de confiance. Pouvant accepter la valeur Null.

autorisations

Sur Azure SQL Managed Instance, nécessite VIEW SERVER PERFORMANCE STATE une autorisation.

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_ServerPerformanceStateReader## au rôle de serveur est requis. Sur tous les autres objectifs de service SQL Database, l’autorisation VIEW DATABASE PERFORMANCE STATE sur la base de données ou l’appartenance au rôle serveur ##MS_ServerPerformanceStateReader## est requise.

Notes

Chaque ligne de cette vue représente un événement de mémoire insuffisante (OOM) qui s’est produit dans le moteur de base de données. Tous les événements OOM ne peuvent pas être capturés. Les événements OOM plus anciens peuvent disparaître du jeu de résultats à mesure que des événements OOM plus récents se produisent. Le jeu de résultats n’est pas conservé entre les redémarrages du moteur de base de données.

Actuellement, ce DMV est visible mais non pris en charge dans SQL Server 2022 (16.x) et SQL Server 2025 (17.x).

summarized_oom_snapshot événement étendu

L’événement summarized_oom_snapshot étendu fait partie de la system_health session d’événements pour simplifier la détection des événements hors mémoire. Chaque summarized_oom_snapshot événement étendu correspond à une ligne dans sys.dm_os_out_of_memory_events. Pour plus d’informations, consultez Blog : une nouvelle méthode de résolution des erreurs de mémoire insuffisante dans le moteur de base de données.

Exemples

Un. Obtenir tous les événements OOM disponibles

L’exemple suivant retourne toutes les données d’événement classées par l’heure la plus récente pour le moteur de base de données hébergeant la base de données actuellement connectée.

SELECT *
FROM sys.dm_os_out_of_memory_events
ORDER BY event_time DESC;

B. Obtenir les meilleurs commis de mémoire pour chaque événement OOM

L’exemple suivant retourne un sous-ensemble de données d’événement et développe les données JSON dans la top_memory_clerks colonne. Chaque ligne du jeu de résultats représente un commis de mémoire supérieur pour un événement OOM spécifique.

SELECT event_time,
       oom_cause_desc,
       oom_factor_desc,
       oom_resource_pools,
       top_resource_pools,
       clerk_type_name,
       clerk_page_allocated_mb,
       clerk_vm_committed_mb
FROM sys.dm_os_out_of_memory_events
CROSS APPLY OPENJSON(top_memory_clerks)
                    WITH (
                         clerk_type_name sysname '$.clerk_type_name',
                         clerk_page_allocated_mb bigint '$.page_allocated_mb',
                         clerk_vm_committed_mb bigint '$.vm_committed_mb'
                         )
ORDER BY event_time DESC, clerk_page_allocated_mb DESC;

Chapitre C. Obtenir les principaux pools de ressources pour chaque événement OOM

L’exemple suivant retourne un sous-ensemble de données d’événement et développe les données JSON dans la top_resource_pools colonne. Chaque ligne du jeu de résultats représente un pool de ressources supérieur pour un événement OOM spécifique.

SELECT event_time,
       oom_cause_desc,
       oom_factor_desc,
       oom_resource_pools,
       top_memory_clerks,
       pool_name,
       pool_allocations_mb,
       pool_target_mb,
       pool_is_oom
FROM sys.dm_os_out_of_memory_events
CROSS APPLY OPENJSON(top_resource_pools)
                    WITH (
                         pool_name sysname '$.pool_name',
                         pool_allocations_mb bigint '$.allocations_mb',
                         pool_target_mb bigint '$.pool_target_mb',
                         pool_is_oom bit '$.is_oom'
                         )
ORDER BY event_time DESC, pool_allocations_mb DESC;