Respuestas:
Analogías
A veces es útil usar analogías lejos de las computadoras.
Digamos que tienes una pelota y dos hijos. Solo un niño puede tener la pelota a la vez. Sin embargo, si uno de los niños recibe la pelota y no la suelta porque está distraído (por ejemplo, viendo la televisión), entonces el otro niño no podrá jugar con la pelota.
El otro hijo está bloqueado de ese recurso.
Si comparamos esto con la televisión, por ejemplo, varios niños pueden ver televisión en cualquier momento.
Cabellos
Si nos trasladamos al mundo de la base de datos, vemos que hay diferentes formas de usar los recursos (al igual que nuestros dos ejemplos anteriores). Podemos realizar "lecturas" o podemos realizar "escrituras".
Cuando queremos leer los datos, no hay razón para que otros no puedan leer los datos también, al igual que dos personas que miran televisión. Sin embargo, si queremos escribir los datos, debemos asegurarnos de que nadie más los esté mirando. Si lo están leyendo mientras lo escribimos, obtendrán lecturas "sucias". (Es decir, verán los datos parcialmente escritos, que no serán válidos).
Para asegurar que estas lecturas sucias nunca ocurran, tenemos dos tipos principales de bloqueos, Bloqueos de lectura y Bloqueos exclusivos.
Leer bloqueo
Puede tener varias conexiones diferentes que leen de la misma fuente de datos en cualquier momento dado. Pero para asegurarse de que nadie cambie esos datos mientras lo leen, sacan un Bloqueo de lectura.
Una vez que una conexión tiene un bloqueo de lectura en un dato, todas las demás conexiones deben esperar hasta que se libere el Bloqueo de lectura antes de poder escribir los datos. Otros pueden, sin embargo, eliminar sus propios bloqueos de lectura en ese mismo dato.
Cerradura exclusiva
Si una conexión desea actualizar / insertar / eliminar un dato, debe eliminar un bloqueo exclusivo. Esto evita que cualquier otra conexión elimine también un bloqueo de los datos (haciendo que el bloqueo sea exclusivo de esa conexión).
Cuando una conexión tiene un bloqueo exclusivo en los datos, no se pueden leer otras conexiones de los datos. Esto ayuda a evitar lecturas sucias al garantizar que nadie pueda leer los datos mientras se escriben.
Bloqueo
"Bloqueo" es simplemente un término que significa que una conexión mantiene un bloqueo en un recurso cuando otra conexión quiere leerlo o escribirle. No significa necesariamente que la conexión del propietario no la libere, solo que actualmente la mantiene.
Compare esto con el caso con un niño sosteniendo la pelota. El niño que sostiene la pelota está bloqueando a todos los demás niños para que no la sostengan.
Punto muerto
Sé que no preguntaste esto, pero es solo un paso más para llegar a puntos muertos (y está relacionado muy directamente con el bloqueo).
Los puntos muertos pueden ocurrir cuando tienes dos conexiones que tienen un bloqueo, pero quieren el recurso del otro. En este escenario, es como dos niños que cada uno tiene una pelota, pero quiere la pelota del otro.
Al igual que los niños, estas conexiones no están dispuestas a compartir en absoluto. Cada conexión necesita acceso a ambos recursos para poder continuar. Sin embargo, están en un estado de bloqueo permanente. En este estado, el padre (DBMS) tiene que entrar y elegir un perdedor para que uno de los hijos (conexiones) pueda tener acceso a ambos recursos.
Una vez que se realiza esa conexión "ganadora", libera los recursos y luego la otra conexión ("perdedora") puede intentar nuevamente acceder a ambos recursos.
Entonces, el concepto de un punto muerto es donde tienes dos recursos que se están bloqueando entre sí.
Aquí , puede leer más sobre los diferentes tipos de bloqueos que SQL Server tiene para ofrecer y los diferentes recursos que pueden causar bloqueos / puntos muertos. El artículo es antiguo, pero aún se aplica para SQL Server 2000 hasta 2008 R2. (Hay algunos tipos más de bloqueos agregados a versiones posteriores de SQL Server, pero eso le dará un punto de partida).
Gran explicación de Richard, pero solo quería agregar enlaces a la documentación oficial. Estos temas fueron escritos para SQL Server 2000, pero muchos de los conceptos siguen siendo los mismos hoy:
Comprender y evitar el bloqueo
Comprender el bloqueo en SQL Server
Editar - algunas adiciones:
Video de Five Ways to Fight Blocking : un video muy nuevo de Kendra Little (publicado hoy)
El DBA como detective: solución de problemas de bloqueo y bloqueo - por Rodney Landrum
Cómo identificar problemas de bloqueo con SQL Profiler - por Brad McGehee
Los 3 son autores y / o MVP muy conocidos de SQL Server.