Вы находитесь на странице: 1из 51

1

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%

8T96 leer(A):6 8T;6 leer(A):2 El orden no im#orta, ya


(ue T y T1 leen el mismo valor de A.

8T96 escribir(A):6 8T;6 escribir(A):2 El orden no


im#orta #ara T o T1, #ero se #roducen #roblemas
#osteriormente #or(ue el valor escrito #or T se
sobreescribe #or T1
I#eraciones Con'lictivas...
33
Pl anes !qui val enes( Seri al i )aci n
#Por Con&l i co%

8T96 leer(A):6 8T;6 escribir(A):2 El orden si im#orta,


#or(ue T est leyendo un valor (ue deDa de ser
vlido cuando T1 realiza la escritura.

8T96 escribir(A):6 8T;6 leer(A):2 A#lican las mismas


consideraciones (ue en el caso anterior, aun
cuando esta combinaci)n en concreto no 7enera
anomal.as.
I#eraciones Con'lictivas...
34
Pl anes !qui val enes( Seri al i )aci n
#Por Con&l i co%
0e dice (ue dos o#eraciones -
i
e -
3
de un
#lan 4 estn en con'licto si o#eran sobre el
mismo dato, #ertenecen a transacciones
distintas y al menos una de ellas es escribir
0i dos o#eraciones ?I estn en con'licto
entonces es posible intercambiar el orden en
(ue se eDecutan sin 7enerar nin7Hn ti#o de
anomal.a
35
Pl anes !qui val enes( Seri al i )aci n
#Por Con&l i co%
Es #osible llevar una #lani'icaci)n #aralela a
un #lan en serie e(uivalente.
9ara esto, es necesario analizar las
transacciones y las #osibles o#eraciones en
con'licto (ue #ueden a#arecer.
Es #osible intercambiar el orden en el (ue se
eDecutan dos o#eraciones (ue ?I estn en
con'licto y de esta manera, es #osible (ue se
#ueda obtener un #lan en serie e(uivalente
36
Pl anes !qui val enes( Seri al i )aci n
#Por Con&l i co%
T0 T1
leer(A)
escribir(A)
leer(A)
escribir(A)
leer(B)
escribir(B)
leer(B)
escribir(B)
T0 T1
leer(A)
escribir(A)
leer(A)
leer(B)
escribir(A)
escribir(B)
leer(B)
escribir(B)
T0 T1
leer(A)
escribir(A)
leer(B)
leer(A)
escribir(A)
escribir(B)
leer(B)
escribir(B)
T0 T1
leer(A)
escribir(A)
leer(B)
leer(A)
escribir(B)
escribir(A)
leer(B)
escribir(B)
37
Pl anes !qui val enes( Seri al i )aci n
#Por Con&l i co%
T0 T1
leer(A)
escribir(A)
leer(B)
escribir(B)
leer(A)
escribir(A)
leer(B)
escribir(B)
Dos #lanes son e(uivalentes #or con'licto si el orden de las
o#eraciones en con'licto entre estos dos #lanes es e+actamente el
mismo en ambos #lanes
El orden de las
o#eraciones en
con'licto si7ue
siendo el mismo en
este #lan y en el
anterior (Es decir,
el orden de las
o#eraciones en
con'licto se
conserva)
38
Pl anes !qui val enes( Seri al i )aci n
#Por Con&l i co%
?o todos los #lanes #aralelos tienen un #lan en serie e(uivalente...
=9or (u8 este en #articular ?I es serializable>
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)
39
Pl anes !qui val enes( Seri al i )aci n
#Por Con&l i co%
En teor.a, si se veri'ica la seriabilidad de los
#lanes, entonces no se #roducir nin7una de
las anomal.as mostradas anteriormente
0in embar7o, en la #rctica, com#robar la
seriabilidad de los #lanes no es #osible #or
razones de rendimiento y #or(ue usualmente
no se conocen de antemano todas las
o#eraciones (y la secuencia de estas) (ue
realizar una transacci)n (o si esta abortar o
terminar satis'actoriamente)
40
Proocol os que *arani )an Pl anes Seri al i )abl es
?ormalmente, los 0G/D en lu7ar de veri'icar
la seriabilidad im#lementan ,#rotocolos- (ue
,7arantizan- (ue los #lanes resultantes son
,serializables-2

Protocolos "asados en "lo<ueos2 E+i7en (ue el


acceso a los datos se &a7a de 'orma mutuamente
e+cluyente.

Protocolos "asados en .arcas de Tiempo2


Utilizan marcas de tiempo para determinar el orden
de serializabilidad (-o =amos a entrar en
detalles).
41
+l oqueo
C1 C2
T1
T
T0-561
T0-567
C1 C2
T1
T
T08-61
T08-67
C1 C2
T1
T
T1-561
T1-567
C1 C2
T1
T
T0--61
T18-67
C1 C2
T1
T
T0--67
T18-67
C1 C2
T1
T
T1--61
T1--67
42
+l oqueo ,oral
C1 C2
T1
T
T0-561
C1 C2
T1
T
T08-61
C1 C2
T1
T
T18-67
C1 C2
T1
T
T18-67
C1 C2
T1
T
T0-567
T1-561
Jay un ciclo
(TBKC2BKT1BK C1)
en el 7ra'o, #or lo
tanto &ay un
blo(ueo mortal
=Como se resuelve>
="nanici)n>
=Costo de Cetroceso>
43
+l oqueo
#Ni vel es%
C1
T1
T
T6
T0-561
1ectra
C1
T1
T
T2
T08-61
T1-561
1ectra
C1
T1
T
T2
T18-61
T7-561
)scritra
1a3 distintos tipos de blo<ueos2
Com#artidos (de lectura) o
E+clusivos (de escritura)
44
+l oqueo
#Que sal e mal aqu- ?%
T0 T1
leer(A)
A = A + 50
escribir(A)
leer(A)
leer(B)
imprimir(A + B)
leer(B)
B = B - 50
escribir(B)
blo9-)(A)
#esblo9(A)
blo9-%(A)
#esblo9(A)
blo9-%(B)
#esblo9(B)
blo9-)(B)
#esblo9(B)
T0 T1
leer(A)
leer(A)
A = A + 50
escribir(A)
leer(B)
imprimir(A + B)
leer(B)
B = B - 50
escribir(B)
blo9-%(A)
#esblo9(A)
blo9-)(A)
#esblo9(A)
blo9-%(B)
#esblo9(B)
blo9-)(B)
#esblo9(B)
=Cuanto debe
valer A4/ si los
#lanes 'ueran
en serie>
=;u8 es lo (ue
est
'uncionando
mal>
45
+l oqueo
#Que sal e mal aqu- ?%
T0 T1
leer(A)
A = A + 50
escribir(A)
leer(A)
leer(B)
imprimir(A + B)
leer(B)
B = B - 50
escribir(B)
blo9-)(A)
)esblo8(A)
blo9-%(A)
#esblo9(A)
blo9-%(B)
#esblo9(B)
blo9-)(B)
#esblo9(B)
T0 T1
leer(A)
leer(A)
A = A + 50
escribir(A)
leer(B)
imprimir(A + B)
leer(B)
B = B - 50
escribir(B)
blo9-%(A)
)esblo8(A)
blo9-)(A)
#esblo9(A)
blo9-%(B)
#esblo9(B)
blo9-)(B)
#esblo9(B)
*as transacciones
estn liberando los
blo(ueos muy #ronto...
*as transacciones
estn liberando los
blo(ueos muy
#ronto...
46
+l oqueo en dos .ases
#Sol uci n al probl ema aneri or%
T0 T1
leer(A)
A = A + 50
escribir(A)
leer(B)
B = B - 50
escribir(B)
leer(A)
leer(B)
imprimir(A + B)
blo86E(A)
blo86E(B)
blo86"(A)
)esblo8(A)
blo86"(B)
)esblo8(B)
)esblo8(B)
)esblo8(A)
0ase de
#recimiento
0ase de
%ncogimiento
47
Transacci ones " +l oqueos en SQL
post!res=" BEGIN TAN!A"TI#N$
...
post!res=" !E%E"T &
'#( )e*artame+to
,-EE co)i.o=1
'# /01ATE$
9resulta)os )el select a8u:;
...
...
...
...
...
post!res=" /01ATE )e*artame+to
!ET
+ombre=2"om*utacio+2$
post!res=" "#((IT$
9termi+a < )esblo8uea;
...
...
...
...
...
post!res=" BEGIN TAN!A"TI#N$
...
...
...
...
...
post!res=" !E%E"T &
'#( )e*artame+to
,-EE co)i.o=1
'# /01ATE$
9blo8ueo =asta 8ue termi+e T0;
...
...
...
...
9resulta)os )el select a8u:;
post!res=" /01ATE )e*artame+to
!ET
+ombre=2I+3ormatica2$
post!res=" "#((IT$
48
Transacci ones " +l oqueos en SQL
#+l oqueos ,oral es%
p=" BEGIN TAN!A"TI#N$
B)G-:
p=" !E%E"T &
'#( )e*artame+to
,-EE co)i.o=1 '# /01ATE$
co#i!o $ nombre
--------+-------------
1 $ -nformatica
(1 ro&)
p=" !E%E"T &
'#( )e*artame+to
,-EE co)i.o=> '# /01ATE$
co#i!o $ nombre
--------+-------------
7 $ -nformatica
(1 ro&)
p=" /01ATE )e*artame+to
!ET +ombre=2"om*utacio+2$
'P(AT) *
post!res=" "#((IT$
%+,,-T
p=" BEGIN TAN!A"TI#N$
B)G-:
p=" !E%E"T &
'#( )e*artame+to
,-EE co)i.o=> '# /01ATE$
co#i!o $ nombre
--------+-------------
7 $ -nformatica
(1 ro&)
p=" !E%E"T &
'#( )e*artame+to
,-EE co)i.o=1 '# /01ATE$
E#: )ea)loc? )etecte)
1ETAI%: 0rocess @>1A Baits 3or
!=are%oc? o+
tra+sactio+ 1C@50$
bloc?e) b< *rocess @>1C7
0rocess @>1C Baits 3or
!=are%oc? o+
tra+sactio+ 1C@51$
bloc?e) b< *rocess @>1A7
A'() 0ALTA (-
%>%.PL! *%L
(P*AT% 0!R
S1AR%
49
Transacci ones " +l oqueos en SQL
E+isten otras variantes y
consideraciones a la &ora de realizar
blo(ueos con el 0G/D en 0;*.
9ara saber ms consulte el manual de
usuario del 0G/D #articular y cual(uier
otra documentaci)n corres#ondiente.
50
*raci as
06racias4
51
Qu es una Transacci n?

ALadir2

El conce#to de bitcora y estrate7ias elementales de


recu#eraci)n cuando el sistema se cae (0ilbersc&atz)

Jablar un #oco ms de los distintos estados de una


transacci)n

3alta serializaci)n #or vistas ("ncluirlo como #arte de la


clase o mandarlo como tarea)

3altan #rotocolos basados en marcas de tiem#o (incluirlo


o deDarlo como tarea)

="ncluir blo(ueo basado en .ndices y estructuras de


acceso o similar>

Вам также может понравиться