Consecuencias De La Interferencia Entre Transacciones
Enviado por josuegomez • 19 de Agosto de 2013 • 410 Palabras (2 Páginas) • 475 Visitas
Cuando los accesos concurrentes son todos de lectura (es decir, cuando la BD
sólo se consulta), el problema que se produce es simplemente de rendimiento,
causado por las limitaciones de los soportes de que se dispone: pocos mecanismos
de acceso independientes, movimiento del brazo y del giro del disco demasiado
lentos, buffers locales demasiado pequeños, etc.
Cuando un usuario o más de uno están actualizando los datos, se pueden producir
problemas de interferencia que tengan como consecuencia la obtención
de datos erróneos y la pérdida de integridad de la BD.
Para tratar los accesos concurrentes, los SGBD utilizan el concepto de transacción
de BD, concepto de especial utilidad para todo aquello que hace referencia
a la integridad de los datos, como veremos a continuación.
Ejemplos de transacciones
1) Imaginemos un programa pensado para llevar a cabo la operación de transferencia de dinero
de una cuenta X a otra Y. Supongamos que la transferencia efectúa dos operaciones: en
primer lugar, el cargo a X y después, el abono a Y. Este programa se debe ejecutar de forma
que se hagan las dos operaciones o ninguna, ya que si por cualquier razón (por ejemplo, por
interrupción del flujo eléctrico) el programa ejecutase sólo el cargo de dinero a X sin abonarlos
a Y, la BD quedaría en un estado incorrecto. Queremos que la ejecución de este programa
sea tratada por el SGBD como una transacción de BD.
2) Otro ejemplo de programa que querríamos que tuviera un comportamiento de transacción
podría ser el que aumentara el 30% de la nota de todos los alumnos. Si sólo aumentara
la nota a unos cuantos alumnos, la BD quedaría incorrecta.
Para indicar al SGBD que damos por acabada la ejecución de la transacción, el
programa utilizará la operación de COMMIT. Si el programa no puede acabar
normalmente (es decir, si el conjunto de operaciones se ha hecho sólo de forma
parcial), el SGBD tendrá que deshacer todo lo que la transacción ya haya
hecho. Esta operación se denomina ROLLBACK.
Acabamos de observar la utilidad del concepto de transacción para el mantenimiento
de la integridad de los datos en caso de interrupción de un conjunto
de operaciones lógicamente unitario. Sin embargo, entre transacciones que se
ejecutan concurrentemente se pueden producir problemas de interferencia
que hagan obtener resultados erróneos o que comporten la pérdida de la integridad
de los datos.
Consecuencias de la interferencia entre transacciones
1) Imaginemos que una transacción que transfiere dinero de X a Y se ejecuta concurrentemente
con una transacción que observa el saldo de las cuentas Y y X, en este orden, y nos
muestra su suma.
...