Partager via


Analyser les interblocages avec SQL Server Profiler

S'applique à :SQL ServerAzure SQL Managed Instance

Utilisez le SQL Server Profiler pour identifier la cause d'un interblocage. Un blocage se produit lorsqu’il existe une dépendance cyclique entre deux ou plusieurs threads ou processus, pour un ensemble de ressources dans SQL Server. Le SQL Server Profilervous permet de créer une trace qui enregistre, relit et affiche les événements de blocage dans le cadre d'une analyse.

Pour tracer les événements de blocage, ajoutez la classe d’événements Deadlock graph à une trace. Cette classe d’événements remplit la colonne de données TextData dans la trace avec des données XML relatives aux processus et objets impliqués dans le blocage. SQL Server Profiler peut extraire le document XML dans un fichier XML de blocages (.xdl) que vous pouvez afficher ultérieurement dans SQL Server Management Studio. Vous pouvez configurer le SQL Server Profiler de manière à extraire les événements Deadlock graph vers un fichier unique contenant tous les événements Deadlock graph , ou bien vers des fichiers distincts. Cette extraction peut être réalisée de l'une des manières suivantes :

  • Au moment de la configuration de la trace, utilisez l’onglet Paramètres d’extraction d’événements. Cet onglet n’apparaît pas tant que vous n’avez pas sélectionné l’événement graphique d’interblocage dans l’onglet Sélection des événements.

  • À l’aide de l’option Extraire les événements SQL Server du menu Fichier .

  • Vous pouvez également extraire et enregistrer un événement donné en cliquant avec le bouton droit sur celui-ci et en choisissant Extraire les données d’événement.

Graphes d’interblocage

SQL Server Profiler et SQL Server Management Studio utilisent un graphique WAITFOR de blocage pour décrire un blocage. Le graphique WAITFOR de blocage contient des nœuds de processus, des nœuds de ressources et des arêtes qui représentent les relations entre les processus et les ressources. Les composants des graphiques WAITFOR sont définis dans la table suivante :

Nœud Descriptif
Nœud de processus Un thread qui exécute une tâche ; par exemple, INSERT, UPDATE, ou DELETE.
Nœud de ressource Objet de base de données ; par exemple, une table, un index ou une ligne.
Bord Relation entre un processus et une ressource. Une arête request se produit quand un processus attend une ressource. Une arête owner se produit quand une ressource attend un processus. Le mode de verrouillage est inclus dans la description des arêtes. Par exemple, Mode : X.

Nœud de processus d’interblocage

Dans un graphique WAITFOR, le nœud de processus contient des informations sur le processus. Le tableau suivant décrit les composants d'un processus.

Composant Définition
ID de processus serveur ID de session (SPID), identificateur affecté par le serveur pour le processus propriétaire du verrou.
ID de lot du serveur Identificateur de traitement du serveur (SBID).
ID de contexte d’exécution Identificateur du contexte d'exécution (ECID). ID de contexte d’exécution d’un thread donné associé à un ID de session spécifique.

ECID = { 0, 1, 2, 3, ... n }, où 0 représente toujours le thread principal ou parent, et { 1, 2, 3, ... n } représentent les sous-reads.
Priorité de blocage Priorité de blocage du processus. Pour plus d’informations sur les valeurs possibles, consultez SET DEADLOCK_PRIORITY.
Journal utilisé Quantité d'espace journal utilisée par le processus.
ID de propriétaire ID de transaction des processus qui utilisent des transactions et qui attendent un verrou.
Descripteur de transaction Pointeur vers le descripteur de transaction qui décrit l'état de la transaction.
Mémoire tampon d'entrée Mémoire tampon d'entrée du processus actuel, qui définit le type d'événement et l'instruction en cours d'exécution. Les valeurs possibles incluent :

Langage
RPC
Aucun
. Type d'instruction. Les valeurs possibles sont les suivantes :

NOP
CHOISIR
MISE À JOUR
INSÉRER
SUPPRIMER
Inconnu

Nœud de ressource d’interblocage

Dans un blocage, chacun des deux processus attend une ressource détenue par l'autre processus. Dans un graphique de blocage, les ressources apparaissent sous la forme de nœuds de ressources.