Act Esp 4 - AACZ

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 9

TECNOLÓGICO NACIONAL DE MEXICO

INSTITUTO TECNOLÓGICO DE ENSENADA

Carrera: Ingeniería en Sistemas Computacionales


Grupo: 5SA
Materia: Taller de Bases de Datos
Investigación
Alumno: André Axel Cadena Zepeda
19760606

A diciembre del 2021


En la siguiente investigación de bases de datos, hablaremos sobre dos temas:
“concurrencia” y “las funciones COMMIT y ROLLBACK”. Discurriendo
explícitamente sobre que son, su importancia, que usos tiene, y varios ejemplos
para explicarlo mas a fondo, por lo cual para dar mejor entendimiento es necesario
que hablemos primero sobre que es una “transacción” y como se relaciona con los
temas, en si una transacción en bases de datos es conocida como: “Una unidad
única de trabajo formadas por ordenes que se puede ejecutar”. Ya que, las
transacciones son ordenes a realizar en una base de datos, la concurrencia se da
cuando dos de estas están interconectadas, por lo que el control de la concurrencia
se basa en que la ejecución de las transacciones de forma concurrente sin perder
la consistencia de las bases de datos. Por otro lado, las funciones COMMIT y
ROLLBACK son dos declaraciones transaccionales que se usan para alterar las
transacciones. Este termino (transacción) nos sera de utilidad mientras discurrimos
sobre los temas a continuación.

Comencemos con la Concurrencia,


esta se refiere a que los SGBDs
(Sistemas Gestores de Bases de
Datos) puedan permitir que muchas
transacciones acceden o se realicen
en una misma base de datos a la vez.
Ya que, si hay varios usuarios
intentando modificar un registro o algún dato al mismo tiempo, es necesario tener
un cierto tipo de control para que estas modificaciones no se mezclen o interfieran
entre si o con otros, a este control se le conoce como Control de Concurrencia, esto
lo veremos mas adelante, regresando a la concurrencia, los procesos concurrentes
se pueden ejecutar de forma simultánea, solo y realmente solo si cada uno es
ejecutado en diferentes procesadores. Por otro lado, si todas las acciones son en
un mismo procesador, entonces la concurrencia es simulada al ocuparse de cada
uno alternadamente con muy pequeño intervalos de tiempo entre cada uno. Algunos
de los casos mas notorios de concurrencia son:
• La multiprogramación: ya que el tiempo del procesador es compartido
dinámicamente por varios procesos.
• Las aplicaciones estructuradas: donde la programación estructurada se
implementa como un conjunto de procesos concurrentes.

Aun así, la concurrencia posee varios problemas al realizarse, dichos problemas se


pueden presentar cuando una transacción correcta puede producir un resultado
incorrecto debido a una interferencia de otra transacción, esos problemas son:

1. El problema de la modificación perdida: Este problema se basa en que dos


transacciones acceden a los mismos datos al mismo tiempo, lo cual intercala
a ambos, lo cual hace que el valor de uno de los datos sea incorrecto.
2. El problema de la dependencia no comprometida: Se presenta cuando una
transacción lee o modifica un registro que allá sido actualizado por otra
transacción y esta última todavía no la haya comprometido.
3. El problema del análisis inconsistente: Ocurre cuando una transacción lee
un dato antes que otra transacción lo actualice y lea otro dato después que
la misma transacción lo ha actualizado.

Una ejemplificación del problema 1:

Primero la transacción A pierde una modificación en t4, después la transacción A


lee un registro R en el momento t1, luego la transacción B lee ese mismo registro R
en el momento t2, lo que sigue es que la transacción A actualiza ese registro según
los valores observados en t1 en t3, y termina con la transacción B actualizando el
mismo registro (según valores vistos en t2, los cuales son también los observados
en t1) en el momento t4.

Por consiguiente, la modificación de la transacción A se pierde en t4 porque la B


graba su registro modificado encima del registro modificado por A sin verlo siquiera.

Una ejemplificación del problema 2:

La transacción A se vuelve dependiente de una modificación no comprometida en


t2, ya que A observa una modificación no comprometida en t2, por lo que A opera
sobre una suposición falsa de que: R tiene el valor visto en t2, mientras que su valor
es el visto en t1, en base a eso A podría producir una salida incorrecta, luego el
retroceso de B podría ser por una caída del sistema y A podría haberse completado
antes del ROLLBACK de B.

Peor, aún si A actualizara la modificación no comprometida en t2, esta se pierde


cuando se hace la actualización en t3.
Ejemplificación del problema 3:

La transacción A realiza un análisis inconsistente, donde las dos transacciones A y


B operan sobre registros de cuentas: A suma saldos de las cuentas y B transfiere
una cantidad de 10 de la cuenta 3 a la 1, después el resultado producido por A igual
a 110 es incorrecto, y si se grabara la base quedaría en un estado inconsistente,
por lo que A ha visto la base en un estado inconsistente, por consiguiente, A hizo
un análisis inconsistente.

Para poder resolver o remediar estos problemas o situaciones, se hace uso del
Control de Concurrencia, el cual tiene como objetivo el efectivo desempeño del
SGBD, puesto que permite controlar la ejecución de transacciones que operan en
paralelo, accediendo a información compartida y, por lo tanto, interfiriendo
potencialmente unas con otras. En sí, la importancia del control de concurrencia es
que proporciona metodos de control para garantizar la no interferencia o la
propiedad de aislamiento de transacciones que se ejecutan de manera concurrente.
Estos metodos utilizan algo llamado “Bloqueos”, los cuales en general son cuando
una acción que se debe realizar esta esperando un evento. En sí hay dos clases de
bloqueos: Simples y Mutuos.
El bloqueo simple, es aquel que resuelve problemas, pero también los causa, siendo
que hay sistemas en los que permitir un bloqueo es inaceptable y catastrófico. Aun
así, hay dos tipos de bloqueos simples:

• Exclusivos (X): Este bloqueo se basa en que, si una transacción A tiene un


bloqueo X sobre un registro R, cualquier solicitud de otra transacción B de
cualquier tipo de bloqueo (X o S) sobre R hará que B entre en un estado de
espera, hasta que la transacción A libere el bloqueo.
• Compartidos (S); Este bloqueo se basa en que, si una transacción A tiene un
bloqueo S sobre un registro R, cualquier solicitud de otra transacción B de
bloqueo X sobre R hará que B entre en un estado de espera, hasta que la
transacción A libere el bloqueo. Mientras que una solicitud de otra
transacción B de bloqueo S sobre R sera concedida. Es decir, B tendrá
también un bloqueo S sobre R.

N →La solicitud no se concede y B entra en estado de espera.

S → La solicitud se concede.

Las solicitudes de bloqueos sobre registros por parte de las transacciones son
implícitas en condiciones normales:

• Cuando una transacción lee un registro, adquiere automáticamente un


bloqueo del tipo S sobre él
• Cuando una transacción actualiza un registro, adquiere automáticamente un
bloqueo del tipo X sobre él
Por otro lado, el bloqueo mutuo es una situación en la cual dos o más transacciones
están en un estado de espera simultáneo y cada uno espera la liberación del otro
para poder continuar. Usualmente, el sistema debería detectar y romper estas
situaciones, eligiendo una de las transacciones paralizadas y cancelarla, para haci
liberar sus bloqueos y dejar que continue la otra.

Ahora pasando a las funciones:

La función COMMIT, en el contexto de la gestión de datos,


es la idea de confirmar los cambios provisionales para
hacerlos permanentes, esta función es de uso popular en las
transacciones de base de datos (cuando no hay problemas).
Ya que la sentencia COMMIT hace visible todos los cambios
a otros usuarios.

Por otro lado, la función ROLLBACK, devuelve la base de datos a un estado previo,
esta operación es crucial para la integridad de la base de datos, ya que puede
restaurarla a una copia limpia incluso después de
que se han realizado un conjunto de operaciones
erróneas. En sí, el funcionamiento de la sentencia
ROLLBACK se basa en que todos los cambios de
datos desde la ultima sentencia sean descartados
por el SGBD, y haci tener los datos en su estado
previo a los cambios.

Por lo que, se puede decir que ambas funciones son declaraciones transaccionales
que se utilizan para confirmar o deshacer las transacciones, y también para hacer
que el sistema libere todos los bloqueos relacionados con la transacción. A
continuación, se muestra un cuadro comparativo de ambas funciones:

COMMIT ROLLBACK
FUNCION Valida las modificaciones Borra las modificaciones
realizadas por la transacción realizadas por la transacción
actual. actual.
EFECTO Después de la ejecución de Una vez que se ejecuta
la instrucción COMMIT, la ROLLBACK, la base de
transacción no puede ser datos alcanza su estado
ROLLBACK. anterior, es decir, antes de la
ejecución de la primera
declaración de la
transacción.
OCURRENCIA Ocurre cuando la Ocurre cuando la transacción
transacción se ejecuta con se aborta en medio de la
éxito. ejecución.
SINTAXIS BASICA COMMIT TRANSACTION; ROLLBACK TRANSACTION

En conclusión, la concurrencia permite que los SGBDs puedan ejecutar múltiples


procesos al mismo tiempo y que puedan interactuar entre sí, pero para que dichas
cosas funcionaran efectivamente, es necesario que se mantenga un control de
concurrencia para mantener consistente a las bases de datos y los procesos que se
realicen, aun así, es posible que se aparezca algún problema de los 3 tipos
mencionados y se desaten algunos de los mecanismos de control de concurrencia,
los bloqueos. Por otra parte, vimos que las funciones COMMIT y ROLLBACK, son
dos operaciones tanto implícitas como explicitas, ya que estas pueden ocurrir si se
declaran en el código o sucede algún suceso tanto externo como interno. En sí,
ambos temas tratan sobre las transacciones y el como se realizan en ellas.

BIBLIOGRAFIA:

Sin autor. (2021). Diferencia entre COMMIT y ROLLBACK en SQL. 02/12/21, de


FONDOPERLATERRA Sitio web: https://es.fondoperlaterra.org/comdifference-
between-commit-and-rollback-in-sql-4

IBM. (2015). Cómo funcionan las operaciones de compromiso y retrotracción.


02/12/21, de IBM i 7.3 Sitio web:
https://www.ibm.com/docs/es/i/7.3?topic=concepts-how-commit-rollback-
operations-work

SQL Server. (2021). COMMIT. 01/12/2021, de Microsoft Docs Sitio web:


https://docs.microsoft.com/en-us/sql/t-sql/language-elements/commit-transaction-
transact-sql?view=sql-server-ver15

SQL Server. (2021). ROLLBACK. 01/12/2021, de Microsoft Docs Sitio web:


https://docs.microsoft.com/en-us/sql/t-sql/language-elements/rollback-transaction-
transact-sql?view=sql-server-ver15

SQL Server. (2021). Transacciones. 01/12/2021, de Microsoft Docs Sitio web:


https://docs.microsoft.com/es-es/sql/t-sql/language-elements/transactions-transact-
sql?view=sql-server-ver15

Sin autor. (Sin fecha). Concurrencia. 02/12/21, de PowerPoint Sitio web:


http://www.grch.com.ar/docs/bd/apuntes/BDTema14.pdf

Jose Guadalupe Couoh Dzul. (2015). control de concurrencia. 02/12/21, de


SlideShare Sitio web:
https://es.slideshare.net/joseguadalupecouohdzul/invetigacion-base-de-datos-dis-
para-subir

Sin autor. (2017). Concurrencia base de datos. 02/12/21, de StuDocu Sitio web:
https://www.studocu.com/cl/document/universidad-tecnologica-de-chile/bases-de-
datos/concurrencia-base-de-datos/4187739

Sin autor. (Sin fecha). Concurrencia. 02/12/21, de PowerPoint Sitio web:


https://www.dsi.fceia.unr.edu.ar/downloads/base_de_datos/Concurrencia.pdf

También podría gustarte