Analizar interbloqueos con el Analizador de SQL Server
Use el Analizador de SQL Server para identificar la causa de un interbloqueo. Un interbloqueo se produce cuando hay una dependencia cíclica entre dos o más subprocesos o procesos para algún conjunto de recursos en SQL Server. El Analizador de SQL Server le permite crear una traza que registra, reproduce y muestra eventos de interbloqueo para su análisis.
Para realizar un seguimiento de los eventos de interbloqueo, agregue la clase de evento Deadlock graph a una traza. Esta clase de evento rellena la columna de datos TextData de la traza con datos XML acerca de los procesos y objetos implicados en el interbloqueo. El Analizador de SQL Server puede extraer el documento XML a un archivo XML de interbloqueo (.xdl) que puede ver después en SQL Server Management Studio. Puede configurar el Analizador de SQL Server para extraer eventos Deadlock graph en un solo archivo que contenga todos los eventos Deadlock graph o en archivos independientes. Esta extracción se puede hacer de las siguientes formas:
- Al configurar la traza, mediante la ficha Configuración de extracción de eventos. Tenga en cuenta que esta ficha no aparece hasta que haya seleccionado el evento Deadlock graph en la ficha Selección de eventos.
- Mediante la opción Extraer eventos de SQL Server del menú Archivo.
- También puede extraer y guardar eventos individuales haciendo clic con el botón secundario en un evento concreto y eligiendo Extraer datos de evento.
Gráficos de interbloqueo
El Analizador de SQL Server y SQL Server Management Studio utilizan un gráfico de espera de interbloqueo para describir un interbloqueo. El gráfico de espera de interbloqueo contiene nodos de proceso, nodos de recurso y bordes que representan las relaciones entre los procesos y los recursos. Los componentes de los gráficos de espera se definen en la siguiente tabla:
Nodo de proceso
Un subproceso que realiza una tarea; por ejemplo, INSERT, UPDATE o DELETE.
Nodo de recurso
Un objeto de la base de datos; por ejemplo, una tabla, un índice o una fila.
Borde
Una relación entre un proceso y un recurso. Un borde request se produce cuando un proceso espera un recurso. Un borde owner se produce cuando un recurso espera un proceso. El modo de bloqueo se incluye en la descripción del borde. Por ejemplo, Modo: X. Para obtener más información acerca de los posibles valores que designan los modos de bloqueo, vea Modos de bloqueo.
Nodo de proceso de interbloqueo
En un gráfico de espera, el nodo de proceso contiene información acerca del proceso. En la tabla siguiente se explican los componentes de un proceso.
Componente | Definición |
---|---|
Id. de proceso de servidor |
Identificador de proceso de servidor (SPID), un identificador asignado a un servidor para el proceso que posee el bloqueo. |
Id. de lote de servidores |
Identificador de lote de servidores (SBID). |
Id. de contexto de ejecución |
Identificador de contexto de ejecución (ECID). Id. de contexto de ejecución de un subproceso dado asociado con un SPID específico. ECID = {0,1,2,3, ...n}, donde 0 siempre representa el subproceso principal o primario, y {1,2,3, ...n} representan los subprocesos secundarios. |
Prioridad de interbloqueo |
Prioridad de interbloqueo del proceso. Para obtener más información acerca de los posibles valores, vea SET DEADLOCK_PRIORITY (Transact-SQL). |
Registro utilizado |
Cantidad de espacio del registro utilizado por el proceso. |
Id. de propietario |
Id. de transacción de los procesos que están usando transacciones y que actualmente están esperando en un bloqueo. |
Descriptor de transacción |
Puntero al descriptor de transacción que describe el estado de la transacción. |
Búfer de entrada |
Búfer de entrada del proceso actual; define el tipo de evento y la instrucción que se está ejecutando. Los valores posibles incluyen:
|
Instrucción |
Tipo de instrucción. Los valores posibles son:
|
Nodo de recurso de interbloqueo
En un interbloqueo, dos procesos están esperando un recurso retenido por el otro recurso. En un gráfico de interbloqueo, los recursos se muestran como nodos de recursos. Cada recurso será uno de los tipos enumerados en Granularidad y jerarquías de bloqueo.
Vea también
Tareas
Cómo guardar gráficos de interbloqueo (Analizador de SQL Server)
Conceptos
Interbloqueos
Detectar y finalizar interbloqueos