Está en la página 1de 11

EJEMPLO Nº 1 (ESTADO INCONSISTENTE)

EJECUCIÓN DEL PLAN DE TRANSACIONES: PRIMERO SE EJECUTA T1 Y LUEGO T2


A=10; Y=10; X=20; Sum=50
T1 T2
inicio
Leer(Sum)
VALORES INICIALES DE LOS VALORES EN LA
Leer(A) BASE DE DATOS O ESTADO INICIAL
Sum=Sum+A
A=A+2
Y=Y+1
Escribir(Y) Inicio
Escribir(A) Leer(X)
Escribir(Sum) X=X-5
Commit Escribir (X)
Leer(Y)
Y=Y+5
Escribir(Y)
Commit
EXPLICACIÓN EJEMPLO Nº 1 (ESTADO INCONSISTENTE)
UNA TRANSACCIÓN ES UN PROGRAMA O CONJUNTO DE INSTRUCCIONES QUE SE EJECUTAN
UNA TRAS OTRA PARA EMITIR O MOSTRAR UNA SALIDA VALIDA. EL EJEMPLO N°1 CONSTA DE
UN PLAN DE TRANSACCIONES COMPUESTO POR LAS TRANSACCIONES T1 Y T2 (la notación
para las transacciones es en mayúsculas T1,T2,…). EN ESTE PLAN DE TRANSACCIONES SE
EJECUTA PRIMERO T1 Y LUEGO DE EJECUTA T2. SI SE PRESENTA UN ERROR DE EJECUCIÓN
(FALLA DE CAÍDA DE SISTEMA) O DE LÓGICA EN LA CORRIDA DE ESTE PLAN PARA T1 O T2 O
AMBAS, SE OBTIENE UNA SALIDA INCORRECTA Y POR LO TANTO, LOS VALORES GUARDADOS
EN LA BASE DE DATOS SON INCORRECTOS Y ESTO GENERA UN ESTADO INCONSISTENTE.
HAY QUE TENER PRESENTE QUE HAY DOS(2) OPERACIONES BÁSICAS EN LAS
TRANSACCIONES:
1. LEER(A): LA CUAL CONSISTE EN TRAER EL ELEMENTO A DE LA BASE DE DATOS A LA
MEMORIA LOCAL DE LA TRANSACCIÓN. CADA TRANSACCIÓN TIENE SU PROPIA MEMORIA
LOCAL O LO QUE ES LA MISMO UN SECTOR DA MEMORIA RAM PARA GUARDAR LOS
CALCULOS DE SUS OPERACIONES. ESTA MEMORIA ES EXCLUSIVA DE CADA
TRANSACCIÓN. EN EL CASO DEL EJEMPLO 1 EXISTEN DOS(2) MEMORIAS LOCALES UNA
PARA T1 Y OTRA PARA T2.
2. ESCRIBIR(A): LA CUAL CONSISTE EN GRABAR EL NUEVO VALOR DEL ELEMENTO A EN LA
BASE DE DATOS.
EN EL EJEMPLO 1 EL ESTADO INICIAL DEL PLAN DE TRANSACCIONES CONSISTE EN LOS
VALORES LEIDOS DE LA BASE DE DATOS PARA A=10; Y=10; X=20; Sum=50
EXPLICACIÓN EJEMPLO Nº 1 (CONTINUACIÓN)
EL ESTADO FINAL PARA ESTE EJEMPLO CONSISTE EN LOS VALORES QUE RESULTARON DE
LAS OPERACIONES DE LAS TRANSACCIONES Y QUE VAN A SER ESCRITOS EN LA BASE DE
DATOS. POR LO TANTO EL ESTADO FINAL EN EL EJEMPLO 1 ES: A=12; Y=15; X=25; Sum=60
ANTES DE EJECUTAR EL PLAN DE TRANSACCIONES ES MUY IMPORTANTE DESTACAR QUE EL
CUERPO DE UNA TRANSACCIÓN COMIENZA CON LA PALABRA INICIO Y TERMINA CON LA
PALABRA COMMIT. INICIO SIGNIFICA QUE LA TRANSACCIÓN COMENZÓ SU EJECUCIÓN.
CUANDO LA TRANSACCIÓN EJECUTA EL COMMIT SIGNIFICA QUE SE EJECUTÓ CON ÉXITO.
POR LO TANTO EXISTEN CUATRO (4) ESTADOS EN UNA TRANSACCIÓN: INICIADA,
PARCIALMENTE COMPROMETIDA (CUANDO EJECUTA LA INSTRUCCIÓN ANTES DEL
COMMIT), FALLIDA (CUANDO SE INTERRUMPE SU EJECUCIÓN Y NO EJECUTA EL COMMIT) Y
COMPROMETIDA (CUANDO EJECUTA EL COMMIT). EXISTEN BIBLIOGRAFÍAS QUE INCLUYEN
UN QUINTO ESTADO DE UNA TRANSACCIÓN “ABORTADA”, PERO ESTA ES UNA OPERACIÓN
QUE SE REALIZA PARA VOLVER LOS VALORES QUE NO SE CONFIRMARON A SU ESTADO
INICIAL.
AHORA VEAMOS PORQUE EL RESULTADO DE LA EJECUCIÓN DEL PLAN GENERA UN ESTADO
INCONSISTENTE:
EJECUCIÓN DEL PLAN.
SIGUIENTE LÁMINA.
EJEMPLO Nº 1 (EJECUCIÓN DEL PLAN)
ESTADO INCONSISTENTE
A=10; Y=10; X=20; Sum=50
T1 T2 A Y X Sum
Inicio T1 12 60
Leer(Sum)=50 T2 16 15
NOTA:LOS VALORES DE LAS VARIABLES
Leer(A)=10 X E Y ESTÁN ALMACENADOS EN LA
Los escribir Leer(Y)=10 MEMORIA LOCAL DE T2.
modifican los
valores en la BD,
Sum=Sum+A =60 Inicio
Lee el último valor escrito para Y en T1, en este
caso 11.
por lo tanto, Y A=A+2 =12 Leer(Y) =11 COMO SE PUEDE OBSERVAR EN LA TRANSACCIÓN T1 EL VALOR
cambió del valor
10 a 11 Y=Y+1=11 Leer(X) =20
DE LA VARIABLE SUM ESTÁ MAL CALCULADO, YA QUE SE LE
SUMA EL VALOR DE A=10; PERO EL VALOR CORRECTO QUE SE LE
Escribir(A)=12 X=X-5 =15 DEBERIA SUMAR ES 12. POR LO TANTO SE CALCULA EL VALOR
Escribir(Y)=11 Y=Y+5= 15
CORRECTO DE A Y LUEGO SE LE SUMA A LA VARIABLE SUM PARA
QUE ESTA REFLEJE EL VERDADERO INCREMENTO DE A. AUNQUE
Escribir(Sum) =60 Escribir (X) 15 LA EJECUCIÓN DE LA TRANSACCIÓN T2 ESTÁ CORRECTA, YA QUE
Commit Escribir(Y) =16
LOS VALORES DE X E Y ESCRITOS EN LA BASE DE DATOS ESTÁN
NOTA:LOS VALORES DE LAS VARIABLES CORRECTO; SE OBTIENE UN ESTADO INCONSISTENTE YA QUE EN
A Y SUM ESTÁN ALMACENADOS EN LA Commit T1 EL VALOR DE SUM ES INCORRECTO.
MEMORIA LOCAL DE T1 LA CUAL SE NOTA: LA VARIABLE SUM DEBE REFLEJAR CORRECTAMENTE EL
ENCUENTRA EN LA RAM Y INCREMENTO DE LA VARIABLE A. EL VALOR CORRECTO DE LA
DESAPARECEN O SE LIBERAN CUANDO VARIABLE SUM=62.
SE EJECUTA EXITOSAMENTE T1.
REPRESENTACIÓN DEL CONTENIDO DE LA MEMORIA LOCAL DESPUÉS DE
EJECUTADO EL PLAN DE TRANSACCIONES PARA T1 Y T2.

T1 T2
SUM=50 X=20
VALORES ALMACENADOS
A=10 Y=11 PRODUCTO DE LAS LECTURAS.
CONTENIDO DE LA
MEMORIA LOCAL Y=10
PARA T1 Y T2
A=12 X=15
Y=11 Y=16 VALORES FINALES PRODUCTO DE LAS
OPERACIONES REALIZADAS .
SUM=60
EJEMPLO Nº 1 (ESTADO CONSISTENTE)

A Y X Sum
T1 T2
T1 12 62
Inicio
T2 16 15
Leer(Sum)=50
Leer(A)=10 ESTADO INICIAL DE LA BASE DE DATOS.
A=A+2 =12 A=10; Y=10; X=20; Sum=50
Sum=Sum+A =62
ESTADO FINAL DE LA BASE DE DATOS.
A=A+2 =12
Y=Y+1 Inicio A=12; Y=15; X=25; Sum=62
Escribir(Y) Leer(X) =20
Escribir(A)=12 X=X-5 =15
Escribir(Sum) =60 Escribir (X) 15
Commit Leer(Y) =10 ESTADO CONSISTENTE
Y=Y+5= 15
Escribir(Y) =15
Commit
EJERCICIO
ANALIZAR EL EJERCICIO NRO. 2 Y DETERMINAR PORQUE SE
GENERA UN ESTADO INCONSISTENTE.
EJEMPLO N° 2
Se tienen 3 productos PA=200 UNID, PB=420 UNID,
PC=150 UNID, PUA=50, PUB=100, PUC=80, MVA=1000,
MVB=5000, MVC=3000 UVA=50 UVB=250 UVC=80,
COMA=0, COMB=0, COMC=0.
REQUERIMIENTO:
SE DESEA CALCULAR UNA COMISIÓN EN BASE AL
MONTO TOTAL VENDIDO DE LOS PRODUCTOS A (20%), B
(30%) Y C (10%).

NOMENCLATURA:
PA=NRO DE UNIDADES DEL PRODUCTO A, B O C.
PUA=PRECIO UNITARIO DE A,B,O C.
UVA=UNIDADES VENDIDAS DE A,B,O C.
MVA=MONTO VENDIDO DE A,B O C.
COMA=COMISIÓN DE A,B O C.
ESTADO INCONSISTENTE
T1 T2 T3
Inicio Inicio Inicio
Leer(MVB) Leer(COMA) Leer(A)
Leer(B) Leer(COMB) Leer(MVA)
Leer(PUB) Leer(COMC) Leer(MVC)
Leer(UVB) Leer (MVA) Leer(PUA)
B=B-UVB Leer(MVB) Leer(UVA)
MVB=MVB+(UVB*PUB) Leer (MVC) A=A-UVA
Escribir (B) COMA=MVA*0,2 MVA=MVA+(UVA*PUA)
Escribir(MVB) COMB=MVB*0,3 Escribir (A)
Commit COMC=MVC*0,1 Escribir(MVA)
Escribir(COMA) Leer(C)
Escribir(COMB) Leer(PUC), Leer(UVC)
Escribir(COMC) C=C-UVC
NOTA: PRIMERO SE EJECUTA T1, LUEGO T2 Commit MVC=MVC+(UVC*PUC)
Y POR ÚLTIMO T3 (ORDEN DE EJECUCIÓN DEL Escribir (C)
PLAN DE TRANSACCIONES. Escribir(MVC)
Commit
POR QUÉ ES INCONSISTENTE ESTE PLAN DE TRANSACCIONES?

RESPUESTA: PORQUE PRIMERO DE CALCULAN LAS COMISIONES PARA LOS PRODUCTOS A, B Y C


ANTES DE CALCULAR LOS MONTOS VENDIDOS PARA EL PRODUCTO A Y C. YA QUE LA COMISIÓN SE
CALCULA EN BASE AL MONTO TOTAL VENDIDO EN BsF. PARA CADA PRODUCTO.

ORDEN DE LOS CALCULOS PARA CALCULAR LA COMISIÓN PARA EL PRODUCTO B:

B=B-UVB (SE RESTAN LAS UNIDADES VENDIDAS A LA EXISTENCIA DEL PRODUCTO)


MVB=MVB+(UVB*PUB) AL MONTO VENDIDO EN BOLIVARES SE LE ACUMULA LAS UNIDADES
QUE SE VENDIERON POR EL PRECIO UNITARIO.
COMB=MVB*0,3 LUEGO SE PROCEDE A CALCULAR LA COMISIÓN CORRESPONDIENTE AL
PRODUCTO B.

COMO SE CORRIGE ESTO? CAMBIANDO EL ORDEN DE EJECUCION DEL PLAN. PRIMERO DEBE
EJECUTARSE T1, LUEGO T3 Y POR ÚLTIMO T2.
ESTADO INCONSISTENTE
VALORES INCONSISTENTES
A B C MVA MVB MVC COMA COMB COMC
150 170 70 3500 30000 9400 200 1500 300
VALORES INCORRECTOS

VALORES CONSISTENTES
A B C MVA MVB MVC COMA COMB COMC
150 170 70 3500 30000 9400 700 9000 940

También podría gustarte