Está en la página 1de 5

CONCEPTO DE BLOQUEOS

Son los encargados de hacer que las transacciones tengan la propiedad de


aislamiento. La realización de bloqueos en un entorno concurrente proporciona
aislamiento en los siguientes casos:

 Múltiples transacciones intentan modificar la misma fila.


 Datos no confirmados por una transacción son leídas por otras transacciones.
Esto se conoce como lecturas sucias.
 Los datos leídos con la misma clausulan “select” durante varias etapas de la
transacción dan lugar a valores diferentes con el mismo conjunto de datos.
Conocidos como lecturas no repetibles.
 Los datos leídos con la misma clausulan “select” durante varias etapas de la
transacción dan lugar a diferentes conjuntos de datos. Es lo que se conoce
como “lecturas fantasmas”.
1. Tipos de Bloqueos:
a) Básicos. – De forma general, podemos decir que existen dos tipos de
bloqueos, tenemos los bloqueos compartidos (shared locks) y los
bloqueos exclusivos (exclusive locks).
i. Los bloqueos compartidos son utilizados por sesiones que leen
datos llamados también lectores.
ii. Los bloqueos exclusivos son utilizados por sesiones que escriben
datos, llamados también escritores.

b) Especiales. – En los bloqueos de casos especiales esta los siguientes:


i. Intención: Se utiliza las transacciones para declarar su intención
de obtener un bloqueo compartido.
ii. Actualización: Cuando se ejecutan transacciones DDL que
modifican datos.
iii. Esquema: Se utiliza para mantener la integridad estructural de las
tablas SQL Server.
iv. Actualización masiva: Se utiliza cuando se copian datos de
forma masiva en una tabla.
2. Tipo de bloqueo con respecto a una operación:
 Read-locks: Solo permite lectura.
 Write-locks: Permite lectura y escritura.

El gestor de bloqueos almacena los bloqueos en una tabla de bloqueos:

 SINTAXIS: (<elemento>, <tipo de bloqueo>, <transacción>) = (E, B, T)


La transacción T tiene un tipo de bloqueo B sobre el elemento E.
Normalmente, E es clave, aunque no siempre, porque varias
transacciones pueden bloquear el mismo elemento de forma diferente.

3. Granularidad: La granularidad se refiere a que tan fino desea que sea el


bloqueo. Al nivel de bloqueo es lo que se conoce como Granularidad, es decir
a nivel de que componente estamos haciendo el bloqueo. Serían los
siguientes:
 DBLOCK. Este nivel de bloqueo indica que se bloquea toda la base de
datos.
 TABLOCK. Este nivel de bloqueo implica que se bloquea toda la tabla
completa cuando se efectúa alguna operación sobre ella.
 PAGLOCK. Es un bloqueo a nivel de página de datos que es una
unidad de memoria que utiliza SQL-SERVER
 ROWLOCK. Es el nivel de bloqueo más bajo que existe. Se bloquea a
nivel de registros utilizados

4. Ejemplo: Se va basar en granularidad Gruesa que se refiere al bloqueo de


tablas. En el ejemplo que se va explicar serán dos usuarios que intentan
acceder al mismo tiempo dentro de dos transacciones simultaneas, en primer
lugar, se selecciona la base de datos.
//Seleccionamos nuestra base de datos.

//usuario 1 consultamos nuestra tabla.


//desde el usuario 2 va consultar la misma tabla.
//Posteriormente nuestro usuario 1 vuelve a su tabla y va ejecutar una
transacción simultanea

//mientras el
usuario 2 va consultar lo mismo ejecutando la misma transacción simultánea.
//Ahora que ya se inicio dos transacciones simultaneas para los dos usuarios
vamos a tratar de acceder a sus recursos al mismo tiempo. Con las
transacciones abiertas los dos usuarios intentan realizar un índice y algunas
otras funciones a esa misma tabla. Primero el usuario 1 hace un insert de un
dato en la tabla.

// Mientras el usuario 2 esta insertando otro mismo dato a esa misma tabla,
como se habló la transacción simultánea al mismo tiempo los dos usuarios
intentaron insertar un dato al mismo tiempo el usuario 1 va tener acceso a esa
tabla y va hacer los cambios que desee, mientras que el usuario 2 se pondrá
estar cargando ya que no podrá estar haciendo cambio 2 usuarios al mismo
tiempo en la misma tabla.
//usuario 1 regresa a su
tabla y realiza un update a su misma tabla ese dato se modifica y si le afecto a
fila que quiso cambiar.

//mientras el
usuario 2 que volvió a seleccionar la tabla ya le arrojo un error es el tipo de

bloqueo que estamos explicando.

//El usuario 1 regresa a su tabla y vuelve a consultarse los datos que es


necesario y vemos que si logro cambiar su valor que antes estaba en 5 ahora
está en 3, mientras que el usuario 2 sigue con su tabla bloqueada ya que tiene
el acceso restringido por el uso de las transacciones simultaneas.

También podría gustarte