Actualmente estoy realizando algunos experimentos en una base de datos de SQL Server 2008. Más específicamente, tengo una aplicación JDBC que utiliza cientos de hilos concurrentes para ejecutar miles de tareas, cada una de las cuales se ejecuta la siguiente consulta en la base de datos:SQL Server 2008: Obteniendo deadlocks ... sin bloqueos
UPDATE from Table A where rowID='123'
Sin embargo, yo estoy poniendo un montón de errores de punto muerto (Excepción de SQL 1205) cada vez que configuro el nivel de aislamiento como superior a READ_UNCOMMITTED. ¡Sucede incluso si configuro bloqueo de fila, bloqueo de tabla y sugerencias exclusivas de bloqueo! E incluso en el aislamiento de instantáneas, que no utiliza bloqueos, sigo teniendo errores de interbloqueo.
Ejecuté un rastreo a través del Analizador de SQL para obtener el gráfico de interbloqueo cuando esto sucede, pero no fue de mucha utilidad. Mostraba el proceso de la víctima, conectado a un "grupo de hilos", conectado a cientos de otros procesos. Puede verificarlo aquí:
http://i.stack.imgur.com/7rlv3.jpg
¿Alguien tiene alguna pista de por qué está sucediendo esto? Me he estado volviendo loco en los últimos días tratando de resolverlo. Mi hipótesis actual es que se trata de algo relacionado con los subprocesos de trabajo disponibles en mi instancia de base de datos, la cantidad de memoria disponible o algo que no está relacionado con los bloqueos de nivel de consulta reales.
Gracias!
[¿Ya lo ha visto?] (Http://blogs.msdn.com/b/bartd/archive/2008/09/24/today-s-annoyingly-unwieldy-term-intra-query-parallel-thread- deadlocks.aspx) ¿Su instrucción de actualización tiene un plan paralelo? –
¿Y está diciendo que estos bloqueos ** nunca ** ocurren cuando 'READ_UNCOMMITTED' está en vigor? No es en absoluto obvio para mí cómo eso afectaría la declaración 'update' que se muestra. –
¡Guau! ¡No esperaba una respuesta tan abrumadora en tan poco tiempo! Los bloqueos continúan en READ_UNCOMMITTED, pero solo cuando hay muchos, muchos, muchos más hilos concurrentes (alrededor de 1000). Me disculpo por la vaguedad. – akwok