100% encontró este documento útil (1 voto)
169 vistas17 páginas

Control de Concurrencia en Bases de Datos

Este documento trata sobre la concurrencia en bases de datos. Explica que una transacción representa una unidad lógica de procesamiento, concurrencia y recuperación en una base de datos. También cubre conceptos como la atomicidad de las transacciones y las operaciones de lectura y escritura. Finalmente, define una transacción como una colección de acciones que transforman de manera consistente los estados de un sistema preservando la integridad del mismo.

Cargado por

Milton Reze
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
169 vistas17 páginas

Control de Concurrencia en Bases de Datos

Este documento trata sobre la concurrencia en bases de datos. Explica que una transacción representa una unidad lógica de procesamiento, concurrencia y recuperación en una base de datos. También cubre conceptos como la atomicidad de las transacciones y las operaciones de lectura y escritura. Finalmente, define una transacción como una colección de acciones que transforman de manera consistente los estados de un sistema preservando la integridad del mismo.

Cargado por

Milton Reze
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

ISC

Apuntes de TBD
Instituto Tecnológico de Ciudad Madero
M.C. Martha Laura Chuey Rubio

TEMA IV
CONCURRENCIA

Introducción.
Las consultas hasta ahora tratadas en la base de datos, se han realizado de manera lineal o secuencial; sin
embargo, no se ha discutido qué pasa cuando, por ejemplo, dos consultas tratan de actualizar el mismo
elemento de datos, o si ocurre una falla del sistema durante la ejecución de una consulta. Dada la naturaleza
de una consulta, de lectura o escritura (actualización), a veces no se puede simplemente reactivar la ejecución
de una consulta, puesto que algunos datos pueden haber sido modificados antes de la falla. El no tomar en
cuenta esos factores puede conducir a que la información en la base de datos contenga datos incorrectos.

El concepto fundamental aquí es la noción de “ejecución consistente” o “procesamiento confiable” asociada con
el concepto de una consulta. El concepto de una transacción es usado dentro del dominio de la base de datos
como una unidad básica de cómputo consistente y confiable.

En este tema se tratara del manejo de las transacciones, con las cuales se representa una unidad lógica de
procesamiento de b.d., además se analizará la problemática de los controles de concurrencia, y qué es lo que
ocurre cuando múltiples transacciones introducidas por varios usuarios se interfieren dé modo que los
resultados obtenidos sean incorrectos.

4.1 Conceptos y antecedentes generales.

Un criterio para clasificar los sistemas de b.d. es por el número de usuarios que pueden utilizarlos de manera
concurrente, es decir, al mismo tiempo.

Un SGBD es monousuario si un solo usuario a la vez puede utilizarlo, y multiusuario si muchos usuarios
pueden utilizarlo al mismo tiempo.
El que muchos usuarios puedan utilizar los sistemas de computadora al mismo tiempo se debe al concepto de
multiprogramación, que permite a la computadora procesar simultáneamente varios programas o
transacciones.

Clave: SCA-1025
Grupo: 5504B, 5504C / 12:00 – 13:00, 16:00-17:00 hrs.
Ago. – Dic. 2021
ISC
Apuntes de TBD
Instituto Tecnológico de Ciudad Madero
M.C. Martha Laura Chuey Rubio

Si sólo hay una unidad central de procesamiento (CPU), en realidad sólo se puede procesar un programa a la
vez. Sin embargo, los sistemas operativos de multiprogramación ejecutan algunas órdenes de un programa,
luego suspenden ese programa y ejecutan algunas órdenes del siguiente programa, y así sucesivamente.
Cuando a un programa le llega el turno de usar la CPU otra vez, se reanuda su ejecución en el punto en el que
se suspendió. Así pues, la ejecución concurrente de los programas es en realidad intercalada, ver la figura 1.

A A

B B C CPU 1
D CPU 2

T1 T2 T3 T4 tiempo

Figura 1. Concurrencia intercalada vs concurrencia simultánea

En la primera parte de la figura se muestra la ejecución concurrente de dos programas A y B de manera


intercalada, la intercalación mantiene ocupada a la CPU cuando un programa en ejecución requiere una
operación de entrada o de salida (E/S), como leer un bloque de un disco.

Si la computadora cuenta con múltiples procesadores (CPU) en hw (en la figura emplea 2: CPU1, CPU2), es
posible el procesamiento simultáneo de varios programas, dando lugar a una concurrencia simultánea, no
intercalada, como lo ilustra la segunda parte de la grafica, con los programas C y D.
En un SGBD multiusuario, los elementos de información almacenados son los recursos primarios a los que
pueden tener acceso concurrente los programas de usuarios, que constantemente obtienen información de la
b.d. y la modifican.

A la ejecución de un programa que lee o modifica el contenido de la b.d. es a lo que llamamos una
transacción.

Clave: SCA-1025
Grupo: 5504B, 5504C / 12:00 – 13:00, 16:00-17:00 hrs.
Ago. – Dic. 2021
ISC
Apuntes de TBD
Instituto Tecnológico de Ciudad Madero
M.C. Martha Laura Chuey Rubio

Transacción.
Una transacción es una colección de acciones (que incluye operaciones de acceso a la b.d.) que hacen
transformaciones consistentes de los estados de un sistema preservando la consistencia del sistema, por
esto suele decirse también que la transacción es una unidad lógica de integridad.

Una b.d. está en un estado consistente si obedece todas las restricciones de integridad definidas sobre ella.
Los cambios de estado ocurren debido a actualizaciones, inserción, y supresiones de información. Por
supuesto, se requiere asegurar que la b.d. nunca entre en un estado de inconsistencia. Sin embargo, durante
la ejecución de una transacción, la b.d. puede estar temporalmente en un estado inconsistente o cuando
múltiples transacciones son introducidas en el sistema por varios usuarios, es necesario evitar que interfieran
entre ellas de forma tal que provoquen que la b.d. quede en un estado no consistente; desde este punto de
vista, se puede ver una transacción como una unidad lógica de concurrencia.

Cuando ocurre un fallo que provoca la caída del sistema, en el momento en el que había varias transacciones
en curso de ejecución, muy probablemente dejará erróneos los datos en la b.d. (estado inconsistente); en estas
circunstancias, se debe garantizar que la b.d. pueda ser recuperada a un estado en el cual su contenido sea
consistente, por esto una transacción es considerada también una unidad lógica de recuperación.

El punto importante aquí es asegurar que la b.d. regresa a un estado consistente al final de la ejecución de la
transacción; por lo que la idea clave es que una transacción debe ser atómica, puesto que se ejecuta por unidad,
se le da el nombre de unidad atómica de trabajo, es decir, las operaciones que la componen deben ser
ejecutadas en su totalidad o no ser ejecutadas en absoluto.

En la mayoría de las aplicaciones de las b.d. los usuarios transmiten su trabajo en forma de transacciones, que
también se conocen como Unidades Lógicas de Trabajo (LUWs, Logical Units of Work).

Lo que se persigue con el manejo de transacciones es por un lado tener una transparencia adecuada de las
acciones concurrentes a una b.d. y por otro lado tener una transparencia adecuada en el manejo de las fallas
que se puedan presentar en una b.d.

Clave: SCA-1025
Grupo: 5504B, 5504C / 12:00 – 13:00, 16:00-17:00 hrs.
Ago. – Dic. 2021
ISC
Apuntes de TBD
Instituto Tecnológico de Ciudad Madero
M.C. Martha Laura Chuey Rubio

A continuación se represente en la figura 2, los momentos en que la b.d. se mantiene en estado consistente y
cuando temporalmente esta en un estado inconsistente durante la ejecución de la transacción.

Figura 2. Modelo de Transacción

Operaciones (acciones) de acceso: Lectura y Escritura.


Las operaciones de acceso a la base de datos que una transacción puede incluir son:

Acción: Descripción:
leer_elemento(x) Lee un elemento de la b.d. llamado X y lo coloca en una variable de programa.
Escribir_elemento(x) Escribe el valor de la variable de programa X en el elemento de la b.d. llamado X.

Nota para recordar:


• Un bloque es la unidad básica de transferencia de datos del disco a la memoria principal de la computadora.
• Un elemento de información será un campo de algún registro de la b.d., aunque puede ser una unidad mayor, como
un registro o incluso un bloque completo.

Tabla 1. Operaciones de E/S

Clave: SCA-1025
Grupo: 5504B, 5504C / 12:00 – 13:00, 16:00-17:00 hrs.
Ago. – Dic. 2021
ISC
Apuntes de TBD
Instituto Tecnológico de Ciudad Madero
M.C. Martha Laura Chuey Rubio

La ejecución de una orden leer _ elemento(X) incluye los siguientes pasos:


1. Encontrar la dirección del bloque de disco que contiene el elemento X.
2. Copiar ese bloque de disco en un almacenamiento intermedio (buffer) dentro de la memoria principal
(si ese bloque no está ya en almacenamiento intermedio).
3. Copiar el elemento X del almacenamiento intermedio a la variable de programa llamada X.

La ejecución de una orden escribir _ elemento(X) incluye los siguientes pasos:


1. Encontrar la dirección del bloque de disco que contiene el elemento X.
2. Copiar ese bloque de disco en un almacenamiento intermedio dentro de la memoria principal (si ese
bloque no está ya en almacenamiento intermedio).
3. Copiar el elemento X desde la variable de programa llamada X al lugar correcto dentro del
almacenamiento intermedio.
4. Transferir el bloque actualizado desde el almacenamiento intermedio al disco (ya sea de inmediato
o en algún momento posterior).

Este último paso (4), es el que de hecho actualiza la b.d. en disco. En algunos casos el almacenamiento
intermedio no se transfiere de inmediato al disco, por si fuera necesario hacer cambios en el buffer. Por lo
regular, la decisión sobre cuándo almacenar en disco un bloque modificado que esté en un almacenamiento
intermedio corresponde al gestor de recuperación o el sistema operativo.

Para tener acceso a la b.d., una transacción deberá incluir operaciones leer _ elemento y escribir _ elemento; a
continuación se muestran ejemplos de dos transacciones simples, transacción T1 y transacción T2:

T1 T2

leer _ elemento(X); leer _ elemento(X);


X:=X-N; X:=X+M;
escribir _ elemento(X); escribir _ elemento(X);
leer _ elemento(Y);
Y:=Y+N;
escribir _ elemento(Y);

Los mecanismos de control de concurrencia y de recuperación se ocupan principalmente de las órdenes de


acceso a la b.d. incluidas en una transacción.

Clave: SCA-1025
Grupo: 5504B, 5504C / 12:00 – 13:00, 16:00-17:00 hrs.
Ago. – Dic. 2021
ISC
Apuntes de TBD
Instituto Tecnológico de Ciudad Madero
M.C. Martha Laura Chuey Rubio

Las transacciones introducidas por los diversos usuarios se podrían ejecutar de manera concurrente y podrían
leer y actualizar los mismos elementos de la b.d. Si esta ejecución concurrente no se controla, puede provocar
que la b.d. no sea consistente.

Operaciones de una transacción.


Para fines de recuperación del sistema tras fallos o caídas del mismo y el control de la concurrencia de las
transacciones, el sistema necesita almacenar cuándo se inicia, termina y se confirma o aborta cada transacción,
y además qué modificaciones de qué elementos de b.d. realiza cada una. Por lo tanto, el gestor de
recuperación se mantiene al tanto de las siguientes operaciones:

• INICIO DE TRANSACCION: operación que marca el momento en el que una transacción comienza a
ejecutarse.
• LEER o ESCRIBIR: operaciones de lectura/escritura de elementos de la b.d., que se realizan como
parte de una transacción.
• FIN DE TRANSACCIÓN: las operaciones de LEER y/o ESCRIBIR han terminado. En este punto se
verifica si la transacción debe abortarse por alguna razón (si viola el control de concurrencia, por
ejemplo), o bien si los cambios realizados por la transacción (hasta ahora en buffers de memoria volátil)
pueden aplicarse permanentemente a la b.d. en disco (es decir, si puede realizarse una operación de
CONFIRMAR (COMMIT)).
• CONFIRMAR: ésta señala que la transacción terminó con éxito y que cualesquiera cambios
(actualizaciones) ejecutadas por ella se pueden confirmar sin peligro en la b.d. y que no se
cancelarán.
• ABORTAR (o REVERTIR): ésta indica que la transacción término sin éxito y que cualesquiera
cambios o efectos que pueda haber aplicado a la b.d. se deben cancelar.

Algunas técnicas de recuperación necesitan operaciones adicionales como las siguientes:


• DESHACER: similar a ABORTAR, pero se aplica a una sola operación y no a una transacción
completa.
• REHACER: especifica que algunas de las operaciones realizadas por una transacción deben
repetirse, para asegurar que todas las operaciones realizadas por una transacción que ha sido
CONFIRMADA se hayan aplicado con éxito a la b.d. (es decir, los cambios hayan queddo grabados
físicamente en disco).

Clave: SCA-1025
Grupo: 5504B, 5504C / 12:00 – 13:00, 16:00-17:00 hrs.
Ago. – Dic. 2021
ISC
Apuntes de TBD
Instituto Tecnológico de Ciudad Madero
M.C. Martha Laura Chuey Rubio

Estados de las transacciones.

Figura 3. Diagrama de Transición de Estados de una Transacción.

La figura 3 muestra un diagrama de transición de estados para la ejecución de transacciones que a


continuación se describe:

Una transacción entre en el estado ACTIVA justo después de iniciar su ejecución y, en este estado, puede
realizar operaciones de LEER y ESCRIBIR. Cuando la transacción finaliza, pasa al estado PARCIALMENTE
CONFIRMADA; en este punto, el Subsistema de Control de Concurrencia puede efectuar verificaciones para
asegurar que la transacción no interfiera con otras transacciones en ejecución. Además, el Subsistema de
Recuperación puede anotar qué operaciones (qué cambios) ha realizado que la transacción en un fichero del
sistema (bitácora), con el objetivo de garantizar que los cambios realizados por la transacción terminada
queden permanentes, a pesar de fallos del sistema. Una vez realizadas con éxito ambas verificaciones, la
transacción ha llegado a su punto de confirmación, y pasa al estado CONFIRMADA (ha concluido su ejecución
con éxito). Si una de las verificaciones falla a la transacción se ABORTA mientras está en estado ACTIVA,
pasa al estado FALLIDA; en este caso, es posible que la transacción deba ser cancelada (anulada, revertida,
abortada) para anular los efectos de sus operaciones ESCRIBIR sobre la b.d. El estado TERMINADA indica
que la transacción ha abandonado el sistema.
Las transacciones fallidas (abortadas) pueden ser reiniciadas posteriormente, ya sea de forma automática por
parte del sistema, o bien sea el usuario el que las reintroduzca como si fueran nuevas transacciones.

Clave: SCA-1025
Grupo: 5504B, 5504C / 12:00 – 13:00, 16:00-17:00 hrs.
Ago. – Dic. 2021
ISC
Apuntes de TBD
Instituto Tecnológico de Ciudad Madero
M.C. Martha Laura Chuey Rubio

Bitácora del sistema.


Para poderse recuperar de los fallos de transacciones, el sistema mantiene una bitácora (diario o fichero del
sistema) que sigue la pista a todas las operaciones de transacciones que afectan los valores de elementos de
la b.d.

La bitácora se mantiene en disco, de modo que no la afecta ningún tipo de fallo, más que los de disco o los
catastróficos. Además, la bitácora se respalda periódicamente en cinta (que sería recomendable o en cualquier
dispositivo externo que defina el ABD) para protegerse contra estos tipos de fallos.

A continuación se mencionan los tipos de entradas que se escriben en la bitácora y la acción que realiza cada
una de ellas. En estas entradas, T se refiere a un identificador de transacción único que el sistema genera
automáticamente y que sirve para identificar cada transacción:

1. [inicio_de_transacción, T]: asienta que se ha iniciado la ejecución de la transacción T.

2. [escribir_elemento, T, X, valor_anterior, nuevo_valor]: asienta en la transacción T cambió el valor


del elemento de X de valor_anterior a nuevo_valor.

3. [leer_elemento, T, X]: asienta que la transacción T leyó el valor del elemento de b.d. X.

4. [confirmar, T]: asienta que la transacción T terminó con éxito establece que su efecto se puede
confirmar (asentar permanentemente) en al b.d.

5. [abortar, T]: asienta que se abortó la transacción T.

Si se supone que todos los cambios permanentes de la b.d. ocurren dentro de las transacciones, entonces la
noción de recuperarse de una transacción equivale a deshacer o rehacer las operaciones recuperables
individualmente a partir de la bitácora. Si el sistema se cae, podemos recuperar la b.d. a un estado consistente
examinando la bitácora y usando técnicas de recuperación. Dado que la bitácora contiene un registro de cada
operación ESCRIBIR que altera el valor de algún elemento de la b.d., es posible deshacer (cancelar) el efecto
de estas operaciones ESCRIBIR de una transacción T rastreando hacia atrás en la bitácora y restableciendo
todos los elementos alterados con una operación ESCRIBIR de T a su valor_anterior. También podemos
rehacer el efecto de las operaciones ESCRIBIR de una transacción T rastreando hacia delante en la bitácora y
cambiando todos los elementos modificados por una operación ESCRIBIR de T a su nuevo_valor.

Clave: SCA-1025
Grupo: 5504B, 5504C / 12:00 – 13:00, 16:00-17:00 hrs.
Ago. – Dic. 2021
ISC
Apuntes de TBD
Instituto Tecnológico de Ciudad Madero
M.C. Martha Laura Chuey Rubio

4.2 Propiedades de las transacciones.

Las transacciones deben poseer varias propiedades. Éstas se conocen como propiedades ACID por sus
iniciales en inglés (Atomic, Consistent, Isolation y Durable), deben ser impuestas por los métodos de control de
concurrencia y de recuperación del SGBD:

 Atomicidad: Todas las operaciones de la transacción son ejecutadas por completo, o no se ejecuta
ninguna de ellas (si se ejecuta la transacción, se hace hasta el final).
 Consistencia: Una transacción T transforma un estado consistente de la base de datos en otro estado
consistente, aunque T no tiene por qué preservar la consistencia en todos los puntos intermedios de
su ejecución. Un ejemplo es el de la transferencia de una cantidad de dinero entre dos cuentas
bancarias.
 Aislamiento: Una transacción está aislada del resto de transacciones. Aunque existan muchas
transacciones ejecutándose a la vez, cualquier modificación de datos que realice T está oculta para el
resto de transacciones hasta que T sea confirmada (realiza COMMIT).
Es decir, para cualesquiera T1 y T2, se cumple que:
• T1 ve las actualizaciones de T2 después de que T2 realice COMMIT, o bien
• T2 ve las modificaciones de T1, después de que T1 haga un COMMIT
Pero nunca se cumplen ambas cosas al mismo tiempo.
Nota: esta propiedad puede no imponerse de forma estricta; de hecho, suelen definirse niveles de
aislamiento de las transacciones.
 Durabilidad: Una vez que se confirma una transacción, sus actualizaciones sobreviven cualquier
fallo del sistema. Las modificaciones ya no se pierden, aunque el sistema falle justo después de
realizar dicha confirmación.

Es obligación del método recuperación del Subsistema de Recuperación garantizar la atomicidad y durabilidad
de las transacciones. Si por alguna razón una transacción no puede completarse, como por una caída del
sistema a la mitad de su ejecución, el método de recuperación debe cancelar todos los efectos de la transacción
sobre la b.d.
Se considera que la propiedad de conservación de la consistencia es responsabilidad de los programadores
que escriben los programas de b.d. o del Subsistema de Integridad del SGBD que impone las restricciones de
integridad.

Recuerde que un estado consistente de la b.d. es una colección de todos los elementos de información
(valores) almacenados en la b.d. en un momento dado. Un estado consistente de la b.d. satisface las
restricciones especificadas en el esquema, además de cualesquier otras restricciones que deban cumplirse en
la b.d. Los programas de b.d. deben elaborarse a modo de garantizar que, si la b.d. está en un estado

Clave: SCA-1025
Grupo: 5504B, 5504C / 12:00 – 13:00, 16:00-17:00 hrs.
Ago. – Dic. 2021
ISC
Apuntes de TBD
Instituto Tecnológico de Ciudad Madero
M.C. Martha Laura Chuey Rubio

consistente antes de ejecutar la transacción, estará en un estado consistente después de la ejecución completa
de la transacción, suponiendo que no hay interferencias con otras transacciones.
El Subsistema de Control de Concurrencia es el encargado de conseguir el aislamiento de las transacciones.

4.3 Grados de consistencia.

Consistencia es un término más amplio que la integridad; podría definirse como la coherencia entre todos los
datos de la base de datos, cuando se pierde la integridad se pierde la consistencia, pero la consistencia también
puede perderse por razones de funcionamiento.
Una transacción finalizada (confirmada parcialmente) puede no confirmarse definitivamente (consistencia):

- si se confirma definitivamente el sistema asegura la persistencia de los cambios que ha efectuado


en la base de datos.

- si se anula, los cambios que ha efectuado son desechados.

La ejecución de una transacción debe conducir a un estado de la base de datos consistente (que cumple todas
las restricciones de integridad definidas).

Como se comentó en las propiedades de las transacciones, una transacción atómica es aquella en la que todas
las acciones de la b.d. pueden ocurrir, o también ninguna. Una transacción durable es aquella para la que
todos los cambios confirmados son permanentes. El SMBD no eliminará esos cambios, incluso en el caso de
fracasar. Si la transacción es durable, el SMBD proporcionará las facilidades para recuperar los cambios de
todas las acciones confirmadas cuando sea necesario. Sin embargo, los términos consistentes y aislados
no son tan definitivos como atómicos y durables. Considere la siguiente instrucción de actualización de SQL:
UPDATE CLIENTE
SET CódigodeÁrea = ‘425’
WHERE CódigoPostal = ‘98050’

Suponga que hay 500,000 tuplas en la tabla CLIENTE y que 500 tienen CódigoPostal igual a ‘98050’; le tomará
algún tiempo al SMBD encontrar las 500 tuplas, durante ese tiempo, ¿Otras transacciones permitirán actualizar
los campos de CódigodeÁrea o CódigoPostal de CLIENTE? Si la instrucción de SQL es consistente, estas
actualizaciones estarán prohibidas.

Clave: SCA-1025
Grupo: 5504B, 5504C / 12:00 – 13:00, 16:00-17:00 hrs.
Ago. – Dic. 2021
ISC
Apuntes de TBD
Instituto Tecnológico de Ciudad Madero
M.C. Martha Laura Chuey Rubio

La actualización se aplicará para establecer que las tuplas como éstas existen en el momento en que el
enunciado de SQL inició; esta consistencia se llama Consistencia del Nivel de Instrucción.

Ahora considere una transacción que contenga dos instrucciones de actualización de SQL:

BEGIN TRANSACTION
UPDATE CLIENTE
SET CódigoÁrea = ‘425’
WHERE CódigoPostal = ‘98050’

(Otra transacción en funcionamiento)


UPDATE CLIENTE
SET Descuento = 0.05
WHERE CódigoÁrea = ‘425’
(Otra transacción en funcionamiento)

COMMIT TRANSACTION

En este contexto, ¿qué significa consistente? La consistencia del nivel de instrucción que quiere decir que
cada instrucción procesa independientemente tuplas consistentes, pero que los cambios de otros usuarios de
estos renglones se pueden permitir durante el intervalo entre las dos instrucciones SQL. El nivel de
consistencia de la transacción significa que todos las tuplas impactadas por cualquiera de las instrucciones SQL
son protegidos de cambios durante la transacción completa. Observe, sin embargo, que para algunas
implementaciones de la consistencia del nivel de transacción, una transacción no verá sus propios cambios.

En este ejemplo, la segunda instrucción SQL puede no ver los cambios en las tuplas derivadas de la primera
instrucción SQL. Así, que se debe tener cuidado o poner más atención para determinar qué tipo de consistencia
se refiere, así como, de no caer en la trampa potencial de consistencia del nivel de transacción.

4.4 Niveles de aislamiento.

El aislamiento es la propiedad a nivel de base de datos que controla cómo y cuándo se realizan los cambios y
si son visibles para los demás, los usuarios y los sistemas. Uno de los objetivos del aislamiento es permitir que
múltiples transacciones ocurran al mismo tiempo sin afectar la ejecución de cada una. El aislamiento es una
parte integral de las propiedades transaccionales de la base de datos. Es la tercera propiedad de ACID

Clave: SCA-1025
Grupo: 5504B, 5504C / 12:00 – 13:00, 16:00-17:00 hrs.
Ago. – Dic. 2021
ISC
Apuntes de TBD
Instituto Tecnológico de Ciudad Madero
M.C. Martha Laura Chuey Rubio

(Atomicidad, Consistencia, Aislamiento, Durabilidad) y estas propiedades aseguran que los datos sean

consistentes y precisos.

Un mayor aislamiento limita la capacidad de los usuarios para acceder simultáneamente a los mismos datos.
Cuanto mayor sea el nivel de aislamiento, mayores serán los recursos del sistema necesarios y más probable
será que las transacciones de la base de datos se bloqueen entre sí.

A medida que se reduce el nivel de aislamiento, hay más posibilidades de que los usuarios se encuentren con
fenómenos de lectura tales como dependencias no comprometidas, también conocidas como lecturas sucias,
que hacen que los datos sean leídos desde una fila que ha sido modificada por otro usuario pero que aún no
ha sido confirmada en la base de datos.

Hay cuatro niveles de aislamiento:

1. Serializable es el nivel más alto, lo que significa que las transacciones se completarán antes de que otra transacción
pueda comenzar.

2. Las lecturas repetibles permiten acceder a las transacciones una vez que la transacción ha comenzado, aunque no
haya terminado.

3. Read committed permite acceder a los datos después de que los datos se hayan confirmado en la base de datos, pero
no antes.

4. Read unmitted es el nivel más bajo de aislamiento y permite acceder a los datos antes de que se hayan realizado los
cambios.

4.5 Commit y rollback.

Cuando se han procesado dos transacciones en una b.d. al mismo tiempo, se les llama transacciones
concurrentes. Aun cuando al usuario le pueda parecer que las transacciones concurrentes se han procesado
en forma simultánea, esto no puede ser verdad, ya que el CPU de la máquina que está procesando la b.d. sólo
puede ejecutar una instrucción a la vez.
Por lo general las transacciones están mezcladas, lo que significa que el sistema operativo alterna los servicios
del CPU entre las tareas para que alguna parte de cada una de ellas se realice en un intervalo determinado.
El siguiente ejemplo muestra dos transacciones concurrentes, la del usuario A y las del usuario B.

Clave: SCA-1025
Grupo: 5504B, 5504C / 12:00 – 13:00, 16:00-17:00 hrs.
Ago. – Dic. 2021
ISC
Apuntes de TBD
Instituto Tecnológico de Ciudad Madero
M.C. Martha Laura Chuey Rubio

Usuario A Usuario B
1. Lee el artículo 100. 1. Lee el artículo 200.
2. Cambia el artículo 100. 2. Cambia el artículo 200.
3. Escribe el artículo 100. 3. Escribe el artículo 200.

El CPU procesa lo del usuario A hasta que encuentra una interrupción de I/O o alguna otra causa de retraso.
El S.O. cambia el control al usuario B. El CPU procesa ahora lo del usuario B hasta que encuentra una
interrupción; en este punto el S.O. pasa el control de regreso al usuario A.

Orden de procesamiento en el
Servidor de la base de datos

1. Lee el artículo 100 para A.


2. Lee el artículo 200 para B.
3. Cambia el artículo 100 para A.
4. Escribe el artículo 100 para A
5. Cambia el artículo 200 para B.
6. Escribe el artículo 200 para B.

El procesamiento concurrente del ejemplo anterior no tiene problemas porque dos usuarios están procesando
datos diferentes. Pero supongamos que ambos quieren procesar el artículo 100.

El usuario A lee el registro del artículo 100 en el área de trabajo de un usuario. De acuerdo con el registro,
existen 10 unidades en inventario. El usuario B lee el registro del artículo 100 en otra área de trabajo.
Nuevamente, de acuerdo con el registro existen 10 unidades en inventario. Ahora el usuario A toma cinco,
disminuye la cantidad de elementos en su área de trabajo a cinco y rescribe el registro para el artículo 100.
Luego el usuario B toma tres, disminuye la cantidad en su área de trabajo a siete, y rescribe el registro para el
elemento 100. La b.d. ahora muestra, incorrectamente, que existen siete elementos en el inventario del
elemento 100.
Nota: inventario en 10 elementos.

Usuario A Usuario B
1. Lee el artículo 100. 1. Lee el artículo 100.
2. Reduce 5 artículos. 2. Reduce 3 artículos.
3. Escribe el artículo 100. 3. Escribe el artículo 100.

Clave: SCA-1025
Grupo: 5504B, 5504C / 12:00 – 13:00, 16:00-17:00 hrs.
Ago. – Dic. 2021
ISC
Apuntes de TBD
Instituto Tecnológico de Ciudad Madero
M.C. Martha Laura Chuey Rubio

Procesamiento del pedido en el servidor de la base de datos: En los pasos 3 y 4 se pierde el cambio y la
escritura.

1. Lee el artículo 100 para A.


2. Lee el artículo 100 para B.
3. Establece que la cantidad de unidades es 5 para A.
4. Escribe el artículo 100 para A.
5. Establece que la cantidad de unidades es 7 para B.
6. Escribe el artículo 100 para B.

Una solución para las inconsistencias causadas por procesamiento concurrente es evitar que aplicaciones
múltiples obtengan copias de un mismo registro cuando va a tener cambios. A esto se le denomina lock
(bloqueo) de recursos (resource locking).

Una manera de evitar problemas de procesamiento concurrente es anular cualquier posibilidad de compartir
información mediante el lock de los datos que se recuperan para la actualización.

El siguiente ejemplo muestra el orden del procesamiento usando un comando de lock (bloqueo):
Nota: inventario en 10 elementos.

Usuario A Usuario B
1. Aplica un lock al artículo 100. 1. Aplica un lock al artículo 100.
2. Lee el artículo 100. 2. Lee el artículo 100.
3. Reduce 5 artículos. 3. Reduce 3 artículos.
4. Escribe el artículo 100. 4. Escribe el artículo 100.

1. Aplica un lock al artículo 100 para el usuario A.


2. Lee el artículo 100 para A.
3. Aplica un lock al artículo 100 para B; no se puede poner,
así que el usuario B entra en espera.
4. Pone la cantidad de unidades igual a 5 para el usuario A.
5. Escribe el artículo 100 para el usuario A.
6. Libera el lock del usuario A en el artículo 100.
7. Aplica un lock al artículo 100 para el usuario B.
8. Lee el artículo 100 para B.
9. Pone la cantidad de unidades en 2 para el usuario B.
10. Escribe el artículo 100 para B.
11. Libera el lock del usuario B en el artículo 100.

Clave: SCA-1025
Grupo: 5504B, 5504C / 12:00 – 13:00, 16:00-17:00 hrs.
Ago. – Dic. 2021
ISC
Apuntes de TBD
Instituto Tecnológico de Ciudad Madero
M.C. Martha Laura Chuey Rubio

Debido al bloqueo, la transacción del usuario B debe esperar hasta que el A haya terminado con los datos del artículo 100.
Usando esta estrategia, el B puede leer el registro del elemento 100 sólo después de que el usuario A ha terminado la
modificación; la cantidad final del artículo almacenado en la b.d. es dos.

Terminología de locks.
Los locks se pueden poner ya sea en forma automática, a través del SMBD, o mediante una instrucción enviada al SMBD
desde el programa de aplicación, o a solicitud del usuario.
Los locks que impone el SMBD se llaman locks implícitos; los que se ponen mediante una instrucción se llaman locks
explícitos. En el ejemplo anterior los locks se aplicaron en los renglones de datos.
Algunos SMBD aplican locks por página, por tabla, o a toda la b.d.; al tamaño de un lock se le llama granularidad del
bloqueo.
Los locks también varían en su tipo. Un lock exclusivo impide el acceso a cualquier tipo de artículo. Ninguna otra
transacción puede leer o cambiar los datos. Un lock compartido impide que se hagan cambios al elemento de datos,
pero permite la lectura. Es decir, otras transacciones pueden leer de ese dato siempre y cuando no intenten modificarlo.

Deadlock (bloqueo Mortal).


Aunque los locks resuelven un problema, introducen otro, el llamado Deadlock o Abrazo Mortal. En el siguiente ejemplo
muestra esta problemática.

Usuario A Usuario B
1. Aplicar un lock al papel. 1. Aplicar un lock a los lápices.
2. Tomar el papel. 2. Tomar los lápices.
3. Aplicar un lock a los lápices. 3. Aplicar un lock al papel.

Orden del procesamiento en el servidor de la base de datos:

1. Aplicar un lock al papel para el usuario A.


2. Aplicar un lock a los lápices para el usuario B.
3. Procesar la solicitud del usuario A; escribir el registro del papel.
4. Procesar la solicitud del usuario B; escribir el registro de los lápices.
5. Poner al usuario A en espera para los lápices.
6. Poner al usuario B en espera para papel.
** BLOQUEADO **

El deadlock se puede evitar de varias maneras; una consiste en permitir que los usuarios emitan sólo una solicitud de lock
a la vez. En esencia, los usuarios deben bloquear al instante todos los recursos que requieren.

Clave: SCA-1025
Grupo: 5504B, 5504C / 12:00 – 13:00, 16:00-17:00 hrs.
Ago. – Dic. 2021
ISC
Apuntes de TBD
Instituto Tecnológico de Ciudad Madero
M.C. Martha Laura Chuey Rubio

En el ejemplo anterior, si el usuario A bloquea al principio los recursos de papel y lápices el deadlock nunca tendrá lugar.
Una segunda manera de evitar el deadlock es requerir que todos los programas de aplicación bloqueen los recursos en el
mismo orden. Incluso si no se bloquean todas las aplicaciones en ese orden, el deadlock se reducirá a los que lo hacen.
Las decisiones acerca de los tipos y estrategias de los locks se han tenido que tomar a base de pruebas y errores; por tal,
los programas de aplicación de base de datos, por lo general, no emiten locks explícitos, sino que marcan las fronteras de
la transacción y después establecen el tipo de comportamiento de bloqueo que desean use el SMBD. De esta manera,
si se necesita cambiar el comportamiento del bloqueo, no se necesita rescribir la aplicación para colocar locks en diferentes
lugares en la transacción. En lugar de eso, se cambia la declaración del lock.

A continuación, se muestra la transacción de lápiz con las fronteras de la transacción marcadas con INICIAR
TRANSACCIÓN, COMMIT TRANSACCIÓN, ROLLBACK TRANSACCIÓN (BEGIN TRANSACTION, COMMIT
TRANSACTION y ROLLBAKC TRANSACTION).

Estas fronteras son la información esencial que el SMBD necesita para aplicar las diferentes estrategias de bloqueo.
Si el programador declara que quiere que el lock sea optimista, el SMBD establecerá implícitamente los locks en los lugares
correctos para ese tipo de bloqueo; si más tarde el programador cambia las tácticas y solicita el bloqueo pesimista, el
SMBD configurará implícitamente los locks en un lugar diferente.

INICIAR TRANSACCIÓN:

SELECT [Link], [Link]


FROM PRODUCTO
WHERE [Link]=’Lápiz’
ViejaCantidad=[Link]
SET NuevaCantidad=[Link] – 5

{procesar transacción – llevar a cabo acción de excepción si NuevaCantidad<0,etc.}

UPDATE PRODUCTO
SET [Link]=NuevaCantidad
WHERE [Link]=’Lápiz’

{continuar procesando transacciones}…. Si la transacción ha terminado normalmente THEN (ENTONCES)

COMMIT TRANSACCIÓN

ELSE (DE OTRO MODO)

ROLLBACK TRANSACCIÓN

END IF (TERMINA SI)


Continuar procesando otras acciones que no son parte de esta transacción…

Clave: SCA-1025
Grupo: 5504B, 5504C / 12:00 – 13:00, 16:00-17:00 hrs.
Ago. – Dic. 2021
ISC
Apuntes de TBD
Instituto Tecnológico de Ciudad Madero
M.C. Martha Laura Chuey Rubio

Fuentes Electrónicas:

Microsoft
[Link]
[Link]
Manual SQL Server
[Link]
IBM
[Link]
[Link]
[Link]
Portal Plesk
[Link]
PowerData
[Link]
DiegoCalvo
[Link]
Desempeño en Oracle
[Link]
RIP Tutorial
[Link]
Programació[Link]
[Link]
Mundo SQL
[Link]

Clave: SCA-1025
Grupo: 5504B, 5504C / 12:00 – 13:00, 16:00-17:00 hrs.
Ago. – Dic. 2021

También podría gustarte