2012-03-20 22 views
22

Deseo obtener más información sobre los diferentes tipos de bloqueos que adquiere Database Engine.¿Qué son los bloqueos de fila, página y tabla? Y cuando se adquieren?

  1. ¿Cuáles son
    • fila Cerraduras
    • bloqueos de página
    • Tabla Cerraduras
  2. Qué es una página en realidad? Como sé que "fila" representa un registro, "tabla" representa todos los registros en una tabla. Pero ¿qué es la página con respecto a una tabla?
  3. Cuando el motor de base de datos adquiere estos bloqueos (escenarios)?

Ayúdenme a comprender estos conceptos.

+2

Este es un tema extenso, por lo que es difícil responder preguntas muy generales sin escribir respuestas muy largas. Pero ya hay mucha información al respecto en la documentación: http://msdn.microsoft.com/en-us/library/ms190615.aspx. Sugiero que empiece revisando eso, luego regrese y haga preguntas más específicas sobre puntos individuales que no están claros. Y dado que este es un sitio de programación, es posible que obtenga mejores respuestas "conceptuales" en dba.stackechange.com. – Pondlife

+1

Una ** página ** es un bloque fijo de 8K de almacenamiento en disco que contiene sus datos e índices y todo lo demás. Es el elemento de almacenamiento más fundamental de SQL Server. Los datos y los índices siempre se cargan en la memoria del servidor SQL en ** páginas ** completas (incluso si desea leer un solo byte, obtiene una página de 8k) –

+0

Para bloqueos: consulte [Introducción al bloqueo en SQL Server] (http: //www.sqlteam.com/article/introduction-to-locking-in-sql-server) y un montón de artículos y publicaciones de blog sobre el bloqueo (¡solo google o Bing para ellos!) –

Respuesta

30

Fila bloqueo

un bloqueo de registro es el nivel más bajo de granularidad de bloqueo posible en SQL Server. Esto significa que se bloquearán una o más filas específicas, y las filas adyacentes seguirán estando disponibles para el bloqueo mediante consultas concurrentes.

Página bloqueo

Un bloqueo de página en SQL Server se bloqueará 8K valor de los datos incluso cuando su consulta sólo necesita 10 bytes de la página. Por lo tanto, su consulta bloqueará los datos adicionales que no solicite en su consulta.

Hobt bloqueo

Cuando una tabla está particionado con "SQL Server Table partitioning" es posible una partición individual será bloqueado (HOBT significa Montón o B-Tree)

Nota: de bloqueos a los bloqueos HOBT está deshabilitado por defecto. ejecute ALTER TABLE MyTable SET (LOCK_ESCALATION = AUTO) para habilitar la escalada de bloqueo de HOBT.

bloqueo de tabla de bloqueo

Una tabla bloqueará la tabla completa.

¿Cuáles son las páginas de datos

Microsoft SQL Server organiza todos sus datos quedarán en "Páginas de Datos" que puede contener 8K valor de los datos. Esto significa que para cualquier acceso de datos en SQL Server 8K se leerá la información.

páginas de datos sólo puede contener información de una tabla y el diseño de una página es well documented on MSDN

El hecho de que SQL Server siempre va a leer una página completa de datos también le da una idea de por qué se prefiere el uso de bloqueos a nivel de página . La implicación de los bloqueos de nivel de página es que puede bloquear muchos más datos de lo que cree.

Por ejemplo, supongamos que tenemos una tabla con un tamaño de registro total de 1024 bytes con un índice agrupado en el campo ID.Cuando ejecutamos la siguiente consulta: SELECT * from MyTable (xlock) where ID = 123, no solo ese registro se bloqueará, sino que (según el relleno de página) también se bloquearán como máximo 3 registros adicionales.

Cuando son estos bloqueos adquiridos

Una consulta será analizado por el regulador de consultas y los bloqueos requeridos será determinado y pedirá al gestor de bloqueos. SQL Server intentará establecer un equilibrio entre el rendimiento y la contención para determinar la estrategia de bloqueo.

SQL Server también sigue un sistema de "escalamiento de bloqueo" que reducirá la granularidad del bloqueo cuando se adquieren más de 5000 bloqueos de cierto tipo. Vea this article on lock escalation para más información.

Este comportamiento puede ser ajustado utilizando bloqueo insinúa con la tensión en consejos, en una consulta que puede especificar por qué tipo de mesa de cerraduras de su preferencia. SQL Server intentará cumplir con su solicitud, pero seguirá aplicando la escalada de bloqueo.

Cuestiones relacionadas