Pregunta

puedo ver cómo apagar el nivel de fila como de páginas de bloqueo en SQL Server, pero no puedo encontrar una manera de forzar SQL Server para el uso de bloqueo a nivel de fila. ¿Hay una manera de forzar SQL Server para utilizar el bloqueo de filas nivel y no usar bloqueo a nivel de página?

¿Fue útil?

Solución

Puede utilizar la sugerencia ROWLOCK, pero que yo sepa SQL puede decidir una escalada que si se ejecuta bajo de recursos

Desde el mana :

  

ROWLOCK Especifica que son bloqueos de registro   tomada cuando la página o de mesa son cerraduras   normalmente tomada. Cuando se especifica en   transacciones que operan en el INSTANTÁNEA   nivel de aislamiento, bloqueos de registro no están   tomado a menos ROWLOCK se combina con   otras sugerencias de tabla que requieren cerraduras,   tales como UPDLOCK y HOLDLOCK.

y

  

Bloqueo insinúa ROWLOCK, UPDLOCK, Y XLOCK   que adquieren bloqueos a nivel de fila pueden colocar   cerraduras de las claves de índice en lugar de la   filas de datos reales. Por ejemplo, si una   tabla tiene un índice no agrupado, y una   instrucción SELECT utilizando una sugerencia de bloqueo es   manejado por un índice de cobertura, un bloqueo es   adquirida en la clave de índice en el   cubriendo índice en lugar de en los datos   fila de la tabla base.

Y finalmente esto da una muy profunda explicación acerca de la extensión de bloqueo en SQL Server 2005 que fue cambiado en SQL Server 2008.

Hay también, la misma en profundidad: El bloqueo de motor de base de (en los libros en línea)

Así que, en general

UPDATE
Employees WITH (ROWLOCK)
SET Name='Mr Bean'
WHERE Age>93

En caso de estar bien, pero dependiendo de los índices y de carga en el servidor puede terminar la escalada a un bloqueo de página.

Otros consejos

Utilice la cláusula allow_page_locks de ALTER / CREATE INDEX :

ALTER INDEX indexname ON tablename SET (ALLOW_PAGE_LOCKS = OFF);

Se puede en realidad no forzar al optimizador a hacer nada, pero se puede guiarla.

UPDATE
Employees WITH (ROWLOCK)
SET Name='Mr Bean'
WHERE Age>93

Ver   - Control de SQL Server con Bloqueo y Sugerencias

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top