Академический Документы
Профессиональный Документы
Культура Документы
Concurrencia y
Transacciones
(... o bien, transacciones y concurrencia ...)
Universidad de los Andes
Demin Gutierrez
Enero 2!
2
Qu es una Transacci n?
A transaction is a complete unit of work. "t
may com#rise many com#utational tas$s,
%&ic& may include user inter'ace, data
retrieval, and communications. A ty#ical
transaction modi'ies s&ared resources.
DistributedTransactionProcessing_TheXA_Specification.PDF
3
Qu es una Transacci n?
Es una unidad lgica de trabajo
(#rocesamiento) de la base de datos (ue
incluye una o ms o#eraciones de acceso a la
base de datos, (ue #ueden ser de inserci)n,
modi'icaci)n o recu#eraci)n
*as transacciones #ueden delimitarse de
'orma e+#licita con sentencias de ti#o ,iniciar
transaccin- y ,terminar transaccin-
iniciar T0
... operaciones ...
terminar T0
4
Qu es una Transacci n?
Adems, en las transacciones tenemos
o#eraciones bsicas (,leer elemento-,
,escribir elemento-), y clculos sobre los
datos le.dos.
iniciar T0
leer(A)
leer(B)
A = A + B
B = B * 1.1
escribir(A)
escribir(B)
terminar T0
*as transacciones
tienen otras
#ro#iedades
,deseables- (ue
veremos ms
adelante
5
Qu es Concurrenci a?
Es cuando muc&as transacciones acceden a
la misma /ase de Datos al mismo tiem#o.
Es#ecialmente, cuando acceden a los mismos
datos de la misma /ase de Datos al mismo
tiem#o
/D
6
Transacci ones
0ean T y T1 dos transacciones2
T0:
leer(A)
A = A 50
escribir(A)
leer(B)
B = B + 50
escribir(B)
T1:
leer(A)
temp = A * 0.1
A = A - temp
escribir(A)
leer(B)
B = B + temp
escribir(B)
Donde A y / son saldos de dos cuentas bancarias di'erentes con
valores de 1 y 2 /s3 res#ectivamente
A 4 / 5 6 /s3
7
Cosas que pueden sal i r mal . . .
leer(A)
A = A 50
leer(A)
A = A + 100
escribir(A)
leer(B)
escribir(A)
B = B + 50
escribir(B)
T0 (Transf) T1 (Gan. Premio)
T1 lee el valor de A antes de (ue T lo #ueda actualizar, lue7o T
escribe A, #ero des#u8s T1 sobre escribe A con un valor incorrecto.
Como consecuencia la actualizaci)n (ue &izo T se #ierde.
Esta escritura &ace
(ue el valor de A
de T se #ierda
Esta lectura se
&ace antes de (ue
T ten7a
o#ortunidad de
actualizar A
Actualizacin Perdida
8
Cosas que pueden sal i r mal . . .
T0 T1
leer(A)
A = A 50
escribir(A)
leer(A)
A = A + 100
escribir(A)
leer(B)
...
T0 aborta!
T1 lee el valor de A lue7o de (ue T lo escribi), y realiza clculos
en base a dic&o valor de A. 0in embar7o, lue7o T aborta, #or lo
tanto el valor de A le.do #or T1 ya no es vlido
Actualizacin Temporal (Lectura Sucia)
T va a realizar
sus clculos con
un valor de A (ue
no es vlido
#or(ue T aborta
9
Cosas que pueden sal i r mal . . .
T0 T1
sma = 0
leer(A)
A = A 50
escribir(A)
leer(A)
suma = suma + A
leer(B)
suma = suma + B
leer(B)
B = B + 50
escribir(B)
T1 est calculando la suma (o cual(uier otra 'unci)n a7re7ada) con
un valor correcto de A, #ero con un valor incorrecto (anterior) de /
Resumen ncorrecto
*a suma se
deber.a &acer
com#letamente
antes o des#u8s
de T, #ero no en
el medio
10
Transacci ones en SQL
post!res=" BEGIN TAN!A"TI#N$
BEGIN
post!res=" !E%E"T & '#( )e*artame+to ,-EE co)i.o=1$
co#i!o $ nombre
--------+------------
1 $ %omptaion
(1 ro&)
post!res=" /01ATE )e*artame+to !ET +ombre=2I+3ormatica2$
'P(AT) *
post!res=" %+,,-T.
"#((IT
post!res=" !E%E"T & '#( )e*artame+to ,-EE co)i.o=1$
co#i!o $ nombre
--------+-------------
1 $ -nformatica
(1 ro&)
post!res="
9ara (ue esto 'uncione en :y0;* las tablas deben utilizar InnoDB y no MyISAM
(:otores de almacenamiento usados #or :y0;*)
11
Transacci ones en SQL
post!res=" BEGIN TAN!A"TI#N$
BEGIN
post!res=" !E%E"T & '#( )e*artame+to ,-EE co)i.o=1
co#i!o $ nombre
--------+-------------
1 $ -nformatica
(1 ro&)
post!res=" /01ATE )e*artame+to !ET +ombre=2"om*utacio+2$
'P(AT) *
post!res=" #%%BA"4$
#%%BA"4
post!res=" !E%E"T & '#( )e*artame+to ,-EE co)i.o=1$
co#i!o $ nombre
--------+-------------
1 $ I+3ormatica
(1 ro&)
post!res="
El dato no actualiz) #or(ue abortamos
(R!LL"A#$) la transacci)n
R%&SAR A'()
P!R'(% L!S
*AT!S *%L
+nombre, %STA"A-
.AL!S/
-0!R.AT#A S%
%STA"A
R%PT%-*! .(#1!
12
Propi edades Deseabl es de l as Transacci ones
A#*2
Atomicity (Atomicidad)
Consistency (Consistencia)
Isolation (Aislamiento)
Durability (Durabilidad < 9ermanencia)
13
Ni vel es de Ai sl ami eno !nre
Transacci ones
READ UNCOMMITTED:
A#enas transaccional, #ermite &acer lecturas
sucias (dirty reads), donde las consultas dentro
de una transacci)n son a'ectadas #or cambios no
con'irmados (not commited) de otras
transacciones
14
Ni vel es de Ai sl ami eno !nre
Transacci ones
R%A* (-#!..TT%* (dirt3 reads)
=;u8 resultado
tendremos lue7o
del #rimer select>
=y lue7o del
se7undo>
15
Ni vel es de Ai sl ami eno !nre
Transacci ones
READ COMMITTED:
*os cambios con'irmados son visibles dentro de
otra transacci)n esto si7ni'ica (ue dos consultas
dentro de una misma transacci)n #ueden retornar
di'erentes resultados (Generalmente este es el
com#ortamiento #or de'ecto en los 0G/D)
16
Ni vel es de Ai sl ami eno !nre
Transacci ones
R%A* #!..TT%* (-on4repeatable reads)
=;u8 resultado
tendremos lue7o
del #rimer select>
=y lue7o del
se7undo>
17
Ni vel es de Ai sl ami eno !nre
Transacci ones
REPEATABE READ:
Dentro de una transacci)n todas las lecturas
son consistentes (Esto es el com#ortamiento
#or de'ecto en :y0;* usando tablas en
"nnoD/
18
Ni vel es de Ai sl ami eno !nre
Transacci ones
R%P%ATA"L% R%A*S (P5antom Reads)
=*a #rimera y la
se7unda consulta
retornan la misma
cantidad de re7istros>
=Deber.an>
19
Ni vel es de Ai sl ami eno !nre
Transacci ones
as transacciones est!n
com"letamente aisladas entre si
#Esto tiene $n costo asociado%%%&
SERIAI'ABE:
?o se #ermiten las actualizaciones en otras
transacciones si una transacci)n &a realizado
una consulta sobre ciertos datos (las distintas
transacciones no se a'ectan entre si)
20
Ni vel es de Ai sl ami eno !nre
Transacci ones
%n resumen2
Sin embargo6 PostgreS'L slo soporta +Read
#ommited, 3 +Serializable,
,"n 9ost7re0;*, you can re(uest any o' t&e 'our standard transaction isolation levels.
/ut internally, t(ere are only t)o distinct isolation le*els, %&ic& corres#ond to t&e
levels Read Committed and Seriali+able. @&en you select t&e level Read
(ncommitted you really 7et Read #ommitted, and %&en you select Repeatable Read
you really 7et 0erializable, so t&e actual isolation level may be stricter t&an %&at you
select.-
&tt#2<<%%%.#ost7res(l.or7<docs<A.1<static<transactionBiso.&tml
21
Transacci ones " ni vel de ai sl ami eno en SQL
#Pos$reSQL%
post!res=" BEGIN TAN!A"TI#N$
BEGIN
post!res=" !ET TAN!A"TI#N I!#%ATI#N %E5E% EA1 "#((ITTE1 EA1 ,ITE$
!ET
post!res=" 66 #tras o*eracio+es777 666
'P(AT) *
post!res=" "#((IT$
"#((IT
post!res="
! R!LL"A#$6 seg7n sea
necesario
&tt#2<<develo#er.#ost7res(l.or7<#7docs<#ost7res<s(lBsetBtransaction.&tml
22
Transacci ones " ni vel de ai sl ami eno en SQL
#Pos$reSQL%
23
=C)mo lo7ran los
0G/D esto>
24
Qu es una Transacci n?
En 7eneral, las transacciones tienen una serie
de estados, (ue #ermiten &acerle un
adecuado se7uimiento
25
!sados de una Transacci n
Activa
9arcialmente
Con'irmada
Con'irmada
Terminada 3allida
"nicio de
Transacci)n
*eer
Escribir
3in de la
Transacci)n
Abortar
Con'irmar
Abortar
Con'irmar 5 Commit
Abortar 5 Collbac$
26
Qu es l a Pl ani &i caci n? #' el Pl an%
Una #lani'icaci)n re#resenta el orden
cronol)7ico en (ue se eDecutan o se &an
eDecutado las instrucciones de un conDunto de
transacciones en el 0G/D
Una #lani'icaci)n #ara una transacci)n debe
conservar todas las instrucciones de la
transacci)n. Adems, se debe conservar el
orden de las instrucciones dentro de la
transacci)n
Plan:
/T10 1(A)20 /T00 1(A)20 /T00 )(A)20 /T00 1(B)2
/T10 )(A)20 /T00 )(B)20 /T10 1(B)20 /T10 )(B)2
27
Pl ani &i caci n en Seri e " en Paral el o
Un #lan en serie (serial) es a(uel en (ue las
transacciones se eDecutan com#letas en
secuencia una detrs de otra
Un #lan no en serie (no serial, o #lan
intercalado) es a(uel en el (ue se intercalan
de 'orma simultnea instrucciones de distintas
transacciones
9lan en serie
9lan no en serie
("ntercalado)
28
Pl ani &i caci n en Seri e " en Paral el o
*os valores 'inales de A y / son AEE y 21FE /s3 res#ectivamente
A 4 / 5 6 /s3
nG #osibles #lani'icaciones en serie (n 5 nHmero de transacciones)
T0 T1
leer(A)
A = A 50
escribir(A)
leer(B)
B = B + 50
escribir(B)
leer(A)
temp = A * 0.1
A = A - temp
escribir(A)
leer(B)
B = B + temp
escribir(B)
9lani'icaci)n en
0erie
(T #rimero, T1
des#u8s, una
detrs de la otra)
El #lan en serie es
a(uel en (ue se
e,ec$tan las
transacciones en
sec$encia- $na
atr!s de la otra
(nunca 7enera
#roblemas)
29
Pl ani &i caci n en Seri e " en Paral el o
T0 T1
leer(A)
escribir(A)
leer(B)
escribir(B)
leer(A)
A = A 50
escribir(A)
leer(B)
B = B + 50
escribir(B)
temp = A * 0.1
A = A - temp
B = B + temp
9lani'icaci)n en
0erie
(T1 #rimero, T
des#u8s, una
detrs de la otra)
*os valores 'inales de A y / son AE y 21E /s3 res#ectivamente
A 4 / 5 6 /s3
30
Pl ani &i caci n en Seri e " en Paral el o
T0 T1
leer(A)
A = A 50
escribir(A)
leer(A)
temp = A * 0.1
A = A - temp
escribir(A)
leer(B)
B = B + 50
escribir(B)
leer(B)
B = B + temp
escribir(B)
*a #lani'icaci)n ?I
est en serie
(o#eraciones de T
y T1 intercaladas)
*os valores 'inales de A y / son AEE y 21FE /s3 res#ectivamente
A 4 / 5 6 /s3 #Mismo res$ltado .$e $na en serie&
#osibles #lani'icaciones en serie / nG (n 5 nHmero de transacciones)
*a #lani'icaci)n es
concurrente, y si
bien no est en
serie, el #lan es
,serializable-
31
Pl ani &i caci n en Seri e " en Paral el o
T0 T1
leer(A)
A = A 50
leer(A)
temp = A * 0.1
A = A - temp
escribir(A)
leer(B)
escribir(A)
leer(B)
B = B + 50
escribir(B)
B = B + temp
escribir(B)
*os valores 'inales de A y / son !E y 21 /s3 res#ectivamente
A 4 / 5 6E /s3 #0El banco "erdi 12 Bs34&
En estos casos se dice (ue la #lani'icaci)n no es serializable
*os #lanes en serie
siem#re son
se7uros (?o
#resentan
anomal.as)
mientras (ue no
todos los #lanes
intercalados son
se7uros
*os #lanes en serie
suelen ser #oco
e'icientes (="or
.$5>) mientras
(ue los #lanes
intercalados suelen
ser ms e'icientes
(y realistas)
32
Pl anes !qui val enes( Seri al i )aci n
#Por Con&l i co%
ALadir2