sql >> Base de Datos >  >> RDS >> Sqlserver

Rompecabezas de punto muerto:la víctima no posee ningún recurso, solía matar para resolver el punto muerto

En el contexto del bloqueo, las tablas y sus índices relacionados son entidades separadas. A veces, el bloqueo muerto ocurre entre una tabla y su índice, en lugar de entre dos tablas separadas.

El problema es más probable cuando se adquiere un bloqueo en un índice y luego se adquiere otro bloqueo en la tabla relacionada (es decir, la barra) para realizar la búsqueda de datos. Durante la inserción, esto sucederá en el orden inverso. Primero, la tabla (es decir, la barra) se bloquea y actualiza, luego se bloquean los índices.

select foo 
from bar 
where @someId = 0 OR SomeId = @someId

¿Tiene/puede agregar un índice de cobertura (para ayudar con la selección) que contenga tanto SomeId como foo? De esta manera, evitará la búsqueda por completo y evitará que ocurra el problema.

¿Puedes publicar los planes de consulta en lugar de los marcos de interbloqueo?