Por lo que entiendo, los bloqueos de SQL ocurren cuando un SPID está ocupado procesando otra consulta y no se puede molestar en ejecutar otro porque está muy ocupado en este momento. SQL Server "aleatoriamente" selecciona una de las consultas para interbloquear los recursos solicitados y falla, lanzando una excepción.¿Por qué ocurren bloqueos en SQL Server?
Tengo una aplicación que ejecuta ~ 40 instancias y un servicio de fondo de Windows, todos los cuales están llegando a la misma base de datos. Estoy buscando reducir los interbloqueos para poder aumentar el número de subprocesos que puedo ejecutar simultáneamente.
- ¿Por qué no puede SQL Server simplemente poner en cola la nueva consulta y ejecutarla cuando tiene tiempo y los recursos están disponibles? La mayoría de lo que estoy haciendo puede esperar unos segundos en alguna ocasión.
- ¿Hay una manera de establecer de aislamiento de transacciones Nivel globalmente sin tener que especificar que en el inicio de cada nueva conexión/sesión?
Su definición de 'deadlock' no es correcto. Normalmente SQL Server ** no ** permite que otras solicitudes esperen. Cuando se cierra una consulta porque detecta una condición de punto muerto, se debe a que el conjunto de consultas no se puede completar (nunca) y alguien tiene que perder. Creo que si lees un poco sobre lo que son los puntos muertos, estarás en una posición mucho mejor para obtener valor de una mejor pregunta –
"Por lo que entiendo" ... el resto de ese párrafo es bastante incorrecto . – heisenberg
Los bloqueos no tienen nada que ver con que el servidor esté demasiado ocupado como para atender una solicitud. Te sugiero que vuelvas a redactar tu pregunta o veas qué es realmente un punto muerto. – sqlvogel