Está en la página 1de 9

TECNOLOGICO NACIONAL DE MEXICO

INSTITUTO TECNOLOGICO DE LA PAZ

Unidad IV
Concurrencia
Taller de Base de Datos
Maestro Juan Antonio Cañedo
Trasviña

David Fernando Von Borstel, Mario Ruiz Flores y


Kenji González Hoshino
17 de Octubre de 2019
Índice
Conceptos generales ........................................................................................................................... 3
Transacción ..................................................................................................................................... 3
Estados de las transacciones ....................................................................................................... 3
Propiedades de las transacciones ................................................................................................... 4
Transacciones anidadas............................................................................................................... 4
Atomicidad .................................................................................................................................. 4
Elementos.................................................................................................................................... 4
Granularidad................................................................................................................................ 4
Livelock ........................................................................................................................................ 4
Deadlock ...................................................................................................................................... 4
Consistencia ................................................................................................................................ 5
Aislamiento.................................................................................................................................. 5
Efecto en lectura ............................................................................................................................. 6
Lectura sucia................................................................................................................................ 6
Lectura repetible ......................................................................................................................... 6
Lectura fantasma......................................................................................................................... 6
Bloqueo ............................................................................................................................................... 6
Niveles de bloqueo .......................................................................................................................... 6
Modos de bloque ............................................................................................................................ 6
Commit ................................................................................................................................................ 7
Rollbacks.............................................................................................................................................. 7
Save Point ............................................................................................................................................ 7
Bibliografía .......................................................................................................................................... 9
Conceptos generales
Transacción
Una transacción es una unidad de la ejecución de un programa. Puede consistir en
varias operaciones de acceso a la base de datos. Está delimitada por constructoras
como:
 BEGIN TRANSACTION
 END TRANSACTION.
Las transacciones sirven para asegurar la consistencia de la información,
asegurando que un conjunto de sentencias se ejecute correctamente, o no se
ejecuten.

Estados de las transacciones


 Activa (Active)
El estado inicial; la transacción permanece en este estado durante su ejecución
 Parcialmente comprometida (Uncommited):
Después de ejecutarse la última transacción
 Fallida (Failed)
Tras descubrir que no se puede continuar la ejecución normal
 Abortada (Rolled Back)
Después de haber retrocedido la transacción y restablecido la base de datos a su
estado anterior al comienzo de la transacción
Propiedades de las transacciones
Transacciones anidadas
Este concepto también es llamado: “Multinivel T”. Se refiere a un conjunto de sub-
transacciones provenientes de uno solo. Estos se ejecutan en un orden en
específico.
Cabe mencionar que:
 Una sub-transacción Ti puede abortar sin la necesidad de que T aborte.
 T puede reiniciar o simplemente no ejecutar Ti.
 T no puede violar el orden de los Ti.

Atomicidad
La atomicidad es una propiedad que indica que un objeto/entidad no puede ser más
divisible.
Los casos en donde se presenta la atomicidad en las transacciones son:
 Consultas unitarias
 Operaciones abortadas

Elementos
Los elementos son las unidades de datos para los que controlan los accesos. Como
una tupla o una relación.

Granularidad
La granularidad es el tamaño de los elementos. Entre más grande sea, hay menos
concurrencia.

Livelock
Es la espera de una o varias transacciones de manera indefinida por la ejecución
de otras transacciones nuevas.
Podemos solucionarlos con los métodos que vimos en sistemas operativos:
 FIFO (First In First Out)
 SJF (Short Job First)
 Round Robin

Deadlock
Es la espera indefinida por transacciones ocurrida por otras transacciones. Lo que
esperan es que dejen un recurso que necesitan, pero la transacción que posee el
recurso puede también necesitar el recurso que el actual posee.
Consistencia
Se refiere a la coherencia entre todos los datos dentro de la base de datos.
Por el aislamiento de las transacciones, la base de datos permanece consistente.

Aislamiento
Cada transacción de un mismo tiene que ser independientes entre sí. No hay ningún
tipo de dependencia en ningún lado. Una transacción inicia cuando no hay otras o
cuando la anterior termino.
Hay 4 niveles de aislamiento, de manera ascendente son:
 Lectura no comprometida
Aquí, la transacción permite la lectura:
 Sucia
 No repetible
 Fantasma
 Lectura comprometida
Aquí, la transacción permite la lectura:
 No repetible
 Fantasma
 Repetible
Aquí, la transacción solo puede realizar lecturas fantasmas.
 Secuenciable/Serializable
Este es el nivel de aislamiento más alto, no se permite ningún efecto de lectura. O
sea que solo lee los datos que existieron una vez que fue creada la transacción.
Efecto en lectura
Hay un total de 3 efectos en lectura, pueden o no estar presentes dependiendo del
nivel de aislamiento:

Lectura sucia
Se refiere a cuando un texto es modificado, y tal modificación se lee, pero la
operación que realizo la modificación todavía no termino o no indico que ya termino
con su tarea.

Lectura repetible
Una transacción lee un renglón, otra transacción modifica el renglón, luego la
primera transacción lee ese renglón nuevamente y despliega el renglón modificado
y no con el valor que tenia anteriormente.

Lectura fantasma
Es lo mismo a la lectura no repetible, con la diferencia de que en vez de un solo
renglón, se trata de una colección de renglones que fueron conseguidos por una
consulta. Como un intervalo de edades o salario.

Bloqueo
Es información que indica el acceso que tienen permitido los elementos.
Los tipos de bloqueo son:
 read-locks: Solo lectura.
 write-locks: Lectura y escritura.

Niveles de bloqueo
Hay diferentes niveles de acuerdo con el bloqueo, y son con respecto a las tablas,
estos son:
 Fila individual
 Clave (fila de un índice)
 Página
 Tabla
 Base de Datos

Modos de bloque
 Compartido: Solo permite lecturas.
 Exclusivo: Solo una transacción puede escribir.
 Actualización: Es una transacción que cambia su modo de bloqueo.
 Intención: No se refiere a una sola transacción, si no los bloqueos que
tendrán todas las transacciones. Puede cambiarse a Compartido o Exclusivo
dependiendo de las necesidades.
Commit
Esta instrucción de SQL se utiliza para confirmar como permanentes las
modificaciones realizadas en una transacción.
Las transacciones explícitas son las que se definen en el código y hay que indicar
cuando se inicia con BEGIN TRANSACTION y cuando finaliza COMMIT
TRANSATION.
Cuando se produce el COMMIT, se hacen efectivos los cambios en los ficheros de
datos (.mdf y .ndf). Mientras no se realiza el COMMIT las sentencias de los cambios
se guardan en el log de transacciones (.ldf), que gracias a este es posible revertir
los cambios si fuese necesario.
BEGIN TRANSACTION;
DELETE FROM Paises.telefonos
WHERE id_telefono = 555555555;
COMMIT TRANSACTION;

Rollbacks
Es una operación que devuelve a la base de datos a algún estado previo.
Los Rollbacks son importantes para la integridad de la base de datos, a causa de
que significan que la base de datos puede ser restaurada a una copia limpia incluso
después de que se han realizado operaciones erróneas.
Si se produce un error en una transacción o el usuario decide cancelar la
transacción, hay que echar para tras la transacción. La instrucción ROLLBACK
también libera los recursos que mantiene la transacción.
BEGIN TRANSACTION
DELETE FROM customers
WHERE age = 25
ROLLBACK TRANSACTION;

Save Point
El comando se utiliza para guardar temporalmente una transacción para que pueda
retroceder a ese punto cuando sea necesario.
SAVE TRANSACTION my_savepoint;
BEGIN TRANSACTION
UPDATE Clientes SET Estado = 'Inactivo' WHERE iddepartamento = 1020
UPDATE Clientes SET Estado = 'DeBaja' WHERE iddepartamento=7025
SAVE TRANSACTION Punto1 -- Guardamos la transaccion (Savepoint)
UPDATE Clientes SET Descripcion = 'Ninguna' WHERE idcliente=5896
-- Este ROLLBACK afecta solo a las instrucciones posteriores al savepoint Punto1.
ROLLBACK TRANSACTION Punto1
Bibliografía
ULLMAN, J.D. "Principles of Databases and Knowledge Base Systems", Vol. I, Computer
Science Press, 1998
SILBERSCHATZ, A., KORTH, H.F., SUDARSHAN, S. "Fundamentos de bases de datos", 3ª
edición, McGraw-Hill, 1998.
ATZENI, P., STEFANO, C., PARABOSCHI, S., TORLONE, R., “Database Systems.
Concepts, Languages and Architectures”, McGraw-Hill, 2000.
CONNOLLY, T., BEGG, C., STRACHAN, A., "Database Systems. A Practical Approach to Design,
Implementation, and Management", 2nd edition, Addison-Wesley,1998.
GARCIA, M.F., REDING , J., WHALEN, E.,DeLUCA, S.A., "Microsoft SQL Server 2000
Administrator's Companion", Microsoft, 2000.
Aosbot y otros. (2019). Concurrencia (informática). 12/10/2019, de Wikipedia Sitio web:
https://es.wikipedia.org/wiki/Concurrencia_(inform%C3%A1tica)
mah y Caleb Jares. (2011). What's the difference between deadlock and livelock?.
12/10/2019, de stackoverflow Sitio web:
https://stackoverflow.com/questions/6155951/whats-the-difference-between-deadlock-
and-livelock
Aosbot. (2019). Aislamiento (ACID). 12/10/2019, de Wikipedia Sitio web:
https://es.wikipedia.org/wiki/Aislamiento_(ACID)
Nikola Dimitrijevic. (2018). Todo sobre el bloqueo (locking) en SQL Server. 12/10/2019, de
SQLShack Sitio web: https://www.sqlshack.com/es/todo-sobre-el-bloqueo-en-sql-server/
K-ren Gonzalez. (2012). Concurrencia y SQL Tuning. 12/10/2019, de YouTube Sitio web:
https://www.youtube.com/watch?v=1vyrktUkngw
monkyta y otros. (2007). Concurrencia en sql server. 12/10/2019, de Foros del Web Sitio
web: http://www.forosdelweb.com/f87/concurrencia-sql-server-519836/

También podría gustarte