2008-09-19 13 views
9

A continuación, se muestra una lista de bloqueos que SQL Server 2000 debe admitir. Estoy un poco confundido en cuanto a lo que significan realmente los bloqueos "intencionales". He buscado en la Web y las respuestas parecen ser un poco crípticas.Bloqueos de SQL Server explicados

Además de obtener una respuesta a mi pregunta específica, espero usar esta pregunta como Wiki para lo que significa cada bloqueo y bajo qué circunstancias se adquirirá ese tipo de bloqueo.

  • compartida (S)
    • actualización (U)
    • exclusivo (X)
    • Intención
      • intención compartida (IS)
      • intención exclusiva (IX)
      • compartido con intención exclusiva (SIX)
      • actualización intención (UI)
      • actualización intención exclusiva (UIX)
      • compartida actualización intención (SIU)
    • esquema
      • modificación del esquema (Sch-M)
      • estabilidad esquema (Sch-S)
    • Actualización a granel (BU)
    • Key-Rango
      • Shared Key-rango y el bloqueo de recursos compartidos (RangeS_S)
      • Shared Key Plazo y Recursos de actualización de bloqueo (RangeS_U)
      • Inserte el texto estándar y el bloqueo de un recurso nulo (RangeI_N)
      • bloqueo exclusivo recurso clave Plazo y Exclusivo (RangeX_X)
      • Cerraduras de conversión (RangeI_S, RangeI_U, RangeI_X, RangeX_S, RangeX_U)
+0

¿No debería este tipo de pregunta ser propiedad de la comunidad? Quiero decir, porque parece mucho trabajo responder. Pero es solo una sugerencia. –

+0

está de acuerdo con Sergio, aunque si un miembro de Rep-heeavy lo edita será una publicación de la comunidad. más personas podrán contribuir si OP lo hace basado en la comunidad. – cori

Respuesta

6

Los bloqueos de intención se colocan en el nivel de la tabla e indican que una transacción colocará bloqueos apropiados en algunas de las filas de la tabla.

Esto acelera la comprobación de conflictos para transacciones que necesitan colocar bloqueos en el nivel de la tabla. Por ejemplo, una transacción que necesita un bloqueo exclusivo en una tabla puede detectar el conflicto en el nivel de la tabla (el bloqueo "intención compartida" estará allí), en lugar de tener que examinar todas las filas (o páginas) para bloqueos compartidos.

11

El SQL server MSDN page tiene una explicación razonable:

Un bloqueo con intención indica que SQL Server quiere adquirir una (S) bloqueo compartido o bloqueo exclusivo (X) en algunos de los recursos más abajo en la jerarquía.Por ejemplo, un bloqueo de intención compartida colocado en el nivel de la tabla significa que una transacción tiene la intención de colocar bloqueos compartidos (S) en páginas o filas dentro de esa tabla. Establecer un bloqueo de intención en el nivel de la tabla evita que otra transacción adquiera un bloqueo exclusivo (X) en la tabla que contiene esa página. Los bloqueos de intención mejoran el rendimiento porque SQL Server examina los bloqueos de intento solo a nivel de tabla para determinar si una transacción puede adquirir un bloqueo de manera segura en esa tabla. Esto elimina el requisito de examinar cada bloqueo de fila o página en la tabla para determinar si una transacción puede bloquear toda la tabla.

1

Otra característica importante de los bloqueos de intención es usted don' t colocarlos explícitamente en el código, se solicitan implícitamente cuando coloca un bloqueo no intencionado.