"Lock Escalation" es cómo SQL maneja el bloqueo para grandes actualizaciones. Cuando SQL va a cambiar muchas filas, es más eficiente para el motor de base de datos tomar menos bloqueos más grandes (por ejemplo, toda la tabla) en lugar de bloquear muchas cosas más pequeñas (por ejemplo, bloqueos de fila).
Pero esto puede ser problemático cuando se tiene una tabla enorme, ya que bloquear una tabla completa puede bloquear otras consultas durante un tiempo prolongado. Ese es el equilibrio: muchos bloqueos de granularidad pequeña son más lentos que menos (o uno) bloqueos de grano grueso, y tener múltiples consultas bloqueando diferentes partes de una tabla crea la posibilidad de un punto muerto si un proceso está esperando otro.
Hay una opción de nivel de tabla, LOCK_ESCALATION
, nueva en SQL 2008, que permite controlar la escalada de bloqueo. El valor predeterminado, "TABLE" permite que los bloqueos escalen hasta el nivel de la tabla. DISABLE previene escalada de bloqueo a toda la tabla en la mayoría de los casos. AUTO permite bloqueos de tabla, excepto si la tabla está particionada, en cuyo caso los bloqueos solo se realizan hasta el nivel de partición. Vea this blog post para más información.
Sospecho que el IDE agrega esta configuración al volver a crear una tabla porque TABLE es la predeterminada en SQL 2008. Tenga en cuenta que LOCK_ESCALATION no es compatible con SQL 2005, por lo que tendrá que quitarlo si intenta ejecutar la secuencia de comandos en una instancia de 2005. Además, dado que TABLE es el valor predeterminado, puede eliminar esa línea de forma segura cuando vuelva a ejecutar su secuencia de comandos.
También tenga en cuenta que, en SQL 2005 antes de este ajuste estaba presente, todos los bloqueos podrían escalar a level-- mesa en otras palabras, "mesa" era el único ajuste en SQL 2005.
mensaje duplicado en los foros de MSDN, así: http://social.msdn.microsoft.com/Forums/en-US/sqldatabaseengine/thread/e96aa19e-d72c-46af-b2e8-4bf54de09440 –
@JustinGrant: ¿Puede esta expresión combinarse con la declaración 'CREATE TABLE'? –
@dma_k: esta opción no es relevante para 'CREATE TABLE' porque la tabla aún no existe, por lo que no hay nada que bloquear. –