Tengo dos procedimientos almacenados que están bloqueados cuando el sistema está bajo carga. El proceso A está seleccionando de una tabla mientras el proceso B se está insertando en la misma tabla. El gráfico de bloqueo muestra que el proceso A tiene un bloqueo de página en modo S para el que el proceso B quiere un bloqueo de modo IX, sin embargo, el proceso A está esperando un bloqueo de página en modo S para una página diferente en la que el proceso B ya tiene un bloqueo de página en modo IX .
Claramente, esto podría resolverse asegurándose de que ambas consultas bloqueen las páginas de la tabla en el mismo orden, pero no puedo entender cómo hacerlo.
Mi pregunta es: ¿cómo determina SQL Server en qué orden bloquear las páginas al hacer INSERT y SELECT y cómo puede modificar este comportamiento?
fuente