UNIVERSIDADE FEDERAL DA PARAIBA CENTRO DE CIENCIAS E TECNOLOGIA CURSO DE MESTRADO EM INFORMATICA
CONTROLE DE C O N C O R R E N C I A
COM
TRA.NSACOES M U L T I N I V E I S
CAMPINA GRANDE ABRIL - 1 9 9 1
CLAUDIO DE SOUZA BAPTISTA
CONTROLE DE CONCORRENCIA COM TRANSAQOES MULTINIVEIS
D i s s e r t a g a o a p r e s e n t a d a ao Curso de Mestrado em I n f o r m a t i c a da U n i v e r s i d a d e F e d e r a l da P a r a i b a , em cumprimento as e x i g e n c i a s p a r a obtenQao do Grau de M e s t r e .
AREA DE CONCENTRAQAO: CIENCIA DA COMPUTAQAO
STEPHANE PIERRE TURC O r i e n t a d o r
CAMPINA GRANDE ABRIL - 1991
C O N T R O L E D E C Q N C Q R R E N C I R C O M T R R N S P f 0 E 5 M U L T I N I V E 1 5 C L R U D I O D E 5 0 U Z R B R P T I S T R D I 5 5 E R T R C R 0 R P R O V R D H EM 0 4 . 0 4 . 1 9 9 1 5 T E P H R N E P I E R R E T U R C , D r . O r i e n t a d o r M R R C U 5 C O S T A 5 R M P R I O , M . S c C o m p o n e n t e da B a n c a C I R R N O I O C H D r . C o m p o n e n t e da B a n c a C a m p i n a G r a n d e , 0 4 d e a b r i l d e 1 9 9 1
Quero e x t e r n a r meus s i n c e r o s a g r a d e c i m e n t o s
a Deus, p e l a f o r c a e s p i r i t u a l ,
aos meus P a i s , Jose C l a u d i o e V a l d a , p o r nao medirem e s f o r c o s em e s t i m u l a r minha formacao,
ao meu o r i e n t a d o r , Dr. Stephane T u r o , p e l a m a n e i r a p r o f i s s i o n a l , p a c i e n t e , i n c e n t i v a d o r a e , s o b r e t u d o , amiga com a q u a l me a c o l h e u d u r a n t e a e l a b o r a c a o d e s t e t r a b a l h o ,
aos meus amigos e f a m i l i a r e s , que sempre e s t i v e r a m ao meu l a d o na h o r a s t r i s t e s e a l e g r e s .
O c o n t r o l e de c o n c o r r e n c i a em Bancos de Dados tern r e c e b i d o m u i t a a t e n c a o nos u l t i m o s anos, no s e n t i d o de o f e r e c e r s i s t e m a s cada vez mais e f i c i e n t e s e c o n f i a v e i s . As novas a p l i c a c o e s (CAD, CASE, I n f o r m a c a o de E s c r i t 6 r i o s ) tern r e q u e r i d o novas t e c n i c a s p a r a o c o n t r o l e de c o n c o r r e n c i a .
E s t a d i s s e r t a c a o e n f o c a o c o n t r o l e de c o n c o r r e n c i a m u l t i n i v e l , que tern s i d o d i f u n d i d o nos s i s t e m a s o r i e n t a d o s a o b j e t o s , s i s t e m a s d i s t r i b u i d o s e a p l i c a c o e s n a o - c o n v e n c i o n a i s , em que fazemos um c o m p a r a t i v o das v a n t a g e n s d e s t a abordagem com r e l a c a o a abordagem c o n v e n c i o n a l , m o s t r a n d o o i n t e r e s s e r e a l e p r a t i c o da u t i l i z a c a o d e s t a nova abordagem.
Ademais, apresentamos um p r o t o c o l o de b l o q u e i o s em duas f a s e s m u l t i n i v e l no q u a l propomos algumas h i p 6 t e s e s que se c o n s t i t u e m na c o n t r i b u i c a o m a i o r d e s t e t r a b a l h o .
Sumario
1. INTRODUQAO 1
2. CONTROLE DE CONCORRENCIA PARA
BANCOS DE DADOS CONVENCIONAIS 8
2.1 I n t r o d u c a o 8 2.2 0 Modelo de Transacao 9 2.3 Schedules 11 2.4 S e r i a l i z a b i l i d a d e 13 2.5 P r o t o c o l o de B l o q u e i o em Duas Fases 18 2.5.1 D e a d l o c k s 22 2.5.1.1 Prevencao de D e a d l o c k s 23 2.5.1.2 Deteccao e Resolucao de D e a d l o c k s 25 2.6 Ordenacao p o r Timestamp 27 2.7 Uma T ec ni c a O t i m i s t a 33 2.8 P r o t o c o l o de T e s t e do G r a f o de S e r i a l i z a c a o - SGT ....38 2.9 Conclus&o 40
3. CONTROLE DE CONCORRENCIA SOBRE
OBJETOS TIPADOS 41 3.1 I n t r o d u c a o 4 1 3.2 C o m u t a t i v i d a d e 42 3.3 U t i l i z a c a o da C o m u t a t i v i d a d e em O b j e t o s T i p a d o s Complexos 58 3.4 0 B l o q u e i o de T i p o E s p e c i f i c o 62 3.5 Conclusao 67
4. CONTROLE DE CONCORRENCIA MULTINIVEL 68 4.1 I n t r o d u c a o 68 4.2 0 Modelo de Transacao M u l t i n i v e l 70 4.2.1 S c h e d u l e s 75 4.3 G r a f o de P r e c e d e n c i a 76 4.4 C o r r e c a o da Abordagem M u l t i n i v e l 78 4.5 Exemplos 80 4.6 ConclusSo 89
5. PROTOCOLO DE BLOQUEIO EM DUAS FASES
PARA TRANSACOES MULTINIVEIS 90
5.1 I n t r o d u c a o 90 5.2 H i p 6 t e s e s do Modelo 9 1 5.3 0 P r o t o c o l o de B l o q u e i o em Duas Fases M u l t i n i v e l - B2FM 94 5.4 Exemplos 100 5.5 Conclusao 107 6. CONCLUSAO 108 7. REFERENCIAS BIBLIOGRAFICAS 110
1. INTRODUCAO
Um Banco de Dados e uma c o l e c a o f i n i t a de i t e n s de dado os q u a i s possuem v a l o r e s que formam o e s t a d o do Banco de Dados. Para t e r acesso a esses i t e n s de dado, u t i l i z a m o s t r a n s a c 6 e s , que sao a i n t e r f a c e e n t r e os u s u a r i o s e o s i s t e m a de Banco de Dados.
I n t u i t i v a m e n t e , podemos d i z e r que uma t r a n s a c S o e uma s e q u e n c i a de acoes que i n t e r a g e m com um Banco de Dados, podendo, ou nSo, a l t e r a r o e s t a d o do mesmo.
Assumiremos que uma t r a n s a c a o , quando e x e c u t a d a s o z i n h a e i n t e g r a l m e n t e a p a r t i r de um e s t a d o i n i c i a l c o n s i s t e n t e do Banco de Dados, i s t o e, que e s t a de a c o r d o com as r e g r a s de i n t e g r i d a d e do s i s t e m a ( r e g r a s que v i s a m p r e s e r v a r a c o n s i s t e n c i a do s i s t e m a de a c o r d o com a s e m a n t i c a da a p l i c a c a o ) , deve p r o d u z i r um e s t a d o f i n a l tambem c o n s i s t e n t e . Ou s e j a , uma t r a n s a c S o deve obedecer as r e s t r i c o e s de i n t e g r i d a d e i m p o s t a s p e l o s i s t e m a . Assumiremos tambem que uma t r a n s a c S o , quando e x e c u t a d a , sempre t e r m i n a , s e j a p o r i n t e r m e d i o de um a b o r t o , que e x p l i c a r e m o s mais t a r d e , ou a t r a v e s da execucao da t r a n s a c a o p o r c o m p l e t o .
No e n t a n t o , um Sistema G e r e n c i a d o r de Banco de Dados, s u p o r t a n d o a execucao s i m u l t a n e a de v a r i a s t r a n s a c o e s , deve g a r a n t i r um acesso c o n c o r r e n t e aos dados p a r a que se t e n h a uma melhor p e r f o r m a n c e no a t e n d i m e n t o as s o l i c i t a c o e s das v a r i a s a p l i c a c o e s . Para que i s t o o c o r r a , f a z - s e n e c e s s a r i a a
de Dados num e s t a d o i n c o n s i s t e n t e , mesmo se cada t r a n s a c a o , quando e x e c u t a d a i s o l a d a m e n t e , ou s e j a , sem i n t e r c a l a c S o , p r o d u z a um e s t a d o c o n s i s t e n t e .
Desta f o r m a , o Sistema G e r e n c i a d o r de Banco de Dados n e c e s s i t a de mecanismos de c o n t r o l e de c o n c o r r e n c i a que assegurem uma execucao c o n c o r r e n t e das t r a n s a c o e s , e v i t a n d o que e e t a s produzam um e s t a d o i n c o n s i s t e n t e . Caso t a i s mecanismos nSo assegurem um e s t a d o c o n s i s t e n t e , poderemos t e r as chamadas a n o m a l i a s de s i n c r o n i z a c a o .
E x e m p l i f i c a r e m o s d o i s t i p o s de a n o m a l i a s : a t u a l i z a c S e s p e r d i d a s e acesso a dados i n c o n s i s t e n t e s [ B e r n s t e i n 8 1 ] .
Exemplo 1.1 A t u a l i z a c S e s p e r d i d a s :
Suponhamos um Banco de Dados p a r a a p l i c a c o e s b a n c a r i a s onde temos as execucoes das s e g u i n t e s t r a n s a c o e s :
T i : Ts Read( temp, C o n t a l ) Add ( temp, 100 ) W r i t e ( temp, C o n t a l ) Read ( temp, C o n t a l ) Add ( temp, 200 ) W r i t e ( temp, C o n t a l ) I s t o e, ambas as t r a n s a c o e s , T i e T 2 , fazem um d e p 6 s i t o s i m u l t a n e a m e n t e numa mesma c o n t a b a n c a r i a ( C o n t a l ) . Sem o c o n t r o l e de c o n c o r r e n c i a , as t r a n s a c S e s podem s e r i n t e r c a l a d a s de qua1quer m a n e i r a .
Suponhamos que a s e g u i n t e s e q u e n c i a s e j a e x e c u t a d a :
S = R e a d i ( t e m p , C o n t a l ) ; R e a d 2 ( t e m p , C o n t a l ) ; A d d i ( t e m p , 1 0 0 ) ; A d d s ( t e m p , 2 0 0 ) ; W r i t e i ( t e m p , C o n t a l ) ; W r i t e s ( t e m p , C o n t a l )
Suponhamos que o v a l o r do s a l d o i n i c i a l da C o n t a l s e j a 500.
P o r t a n t o , s e g u i n d o a s e q u en cia de execucao acima temos : T i l e
500, Tz l e 500, T i a d i c i o n a 100, l o g o a v a r i a v e l temp de T i f i c a com o v a l o r 600: d e p o i s T2 a d i c i o n a 200 a sua v a r i a v e l temp, que f i c a com o v a l o r 700. Por u l t i m o , T i g r a v a na c o n t a c o r r e n t e C o n t a l o v a l o r de sua v a r i a v e l temp que e 600, em s e g u i d a T2 g r a v a no mesmo i t e m de dado C o n t a l , o seu v a l o r de temp que e 700. Logo, c o n c l u i m o s que a a t u a l i z a c a o de T i f o i p e r d i d a , p o i s d o i s c l i e n t e s d e p o s i t a r a m um t o t a l de 300 e s6 f o r a m c r e d i t a d o s 200.
D
Exenvplo 1.2 L e i t u r a s a dados i n c o n s i s t e n t e s :
Suponhamos o mesmo Banco de dados do Exemplo 1.1 e as s e g u i n t e s t r a n s a c S e s , que sao s u b m e t i d a s a execucao s i m u l t a n e a m e n t e :
T i : T2 :
R e a d ( t e m p i , C o n t a l ) Read( t e m p i , C o n t a l ) S u b ( t e m p i , 100 ) Read( temp2, Conta2 ) W r i t e ( t e m p i , C o n t a l ) D i s p l a y ( t e m p i , temp2) Read( temp2,Conta2 ) Add( temp2, 100 ) W r i t e ( temp2, Conta2 ) Suponhamos a s e g u i n t e s e q u S n c i a de execucSo : S = R e a d i ( t e m p i , C o n t a l ) ; S u b i ( t e m p i , 1 0 0 ) W r i t e i ( t e m p i , C o n t a l ) ; R e a d 2 ( t e m p i , C o n t a l ) ; R e a d 2 ( t e m p 2 , C o n t a 2 ) D i s p l a y 2 ( t e m p i , t e m p 2 ) ; R e a d i ( t e m p 2 , C o n t a 2 ) ; A d d i ( t e m p 2 , 1 0 0 ) W r i t e i ( t e m p 2 , C o n t a 2 ) .
Em o u t r a s p a l a v r a s , T i f a z uma t r a n s f e r e n c i a de f u n d o s da C o n t a l p a r a Conta2 e Tz f a z uma c o n s u l t a aos e a l d o s de C o n t a l e Conta2.
Suponhamos que os s a l d o s i n i c i a i s da C o n t a l e Conta2 sejam 500 cada um. Ao e x e c u t a r m o s a s e q u e n c i a S acima, temos que T i l e o v a l o r 500 da C o n t a l , s u b t r a i 100 d e s t e v a l o r , n e s t e momento Tz l e o v a l o r da C o n t a l , que tern o v a l o r 400 d e v i d o ao saque de T i , e Conta2, que a i n d a tern o v a l o r 500, e m o s t r a - o s ao u s u a r i o , em s e g u i d a , T i f a z o d e p o s i t o do v a l o r 100 na Conta2, que passa a t e r o v a l o r 600.
Podemos n o t a r que, ao f i n a l da execucao, o e s t a d o do Banco de Dados e c o n s i s t e n t e , p o i s a t r a n s f e r e n c i a f o i f e i t a c o r r e t a m e n t e ( C o n t a l = 400 e Conta2 = 6 0 0 ) . E n t r e t a n t o , Tz t e v e acesso a dados i n c o n s i s t e n t e s , p o i s p a r a Tz desapareceram 100. I s t o o c o r r e u porque Tz nSo v i u t o d o s os dados m o d i f i c a d o s p o r T i . ffi Para p r o v e r e s t a c o n s i s t e n c i a c i t a d a a n t e r i o r m e n t e , p r e c i s a m o s a d o t a r um c r i t e r i o de c o r r e c a o que i n d i q u e se uma execucao c o n c o r r e n t e e c o r r e t a . E s t e c r i t e r i o s e r a a s e r i a l i z a b i l i d a d e (do i n g l e s s e r i a l i z a b i l i t y ) que s e r a e s t u d a d a no c a p i t u l o 2.
Nos Bancos de Dados C o n v e n c i o n a i s , c u j o s modelos de dados sao o modelo r e l a c i o n a l , o de r e d e s e o h i e r a r q u i c o [ U l l m a n 8 3 ] , v a r i o s metodos p a r a c o n t r o l e de c o n c o r r e n c i a f o r a m p r o p o s t o s nos u l t i m o s anos [ B e r n s t e i n 8 1 , 8 7 ] .
E n t r e t a n t o , apesar de esses metodos g a r a n t i r e m execucoes c o n c o r r e n t e s s e r i a l i z a v e i s , e l e s nSo e x p l o r a m ao maximo o p a r a l e l i s m o , p o i s sao metodos que atuam s o b r e modelos de dados p o b r e s semanticamente.
Ademais, os modelos de dados c o n v e n c i o n a i s n&o atendem aos r e q u i s i t e s das novas a p l i c a c o e s , denominadas de a p l i c a c o e s n S o - c o n v e n c i o n a i s , t a i s como : I n f o r m a c S o de E s c r i t 6 r i o s , P r o j e t o s A s s i s t i d o s p o r Computador (CAD), ConcepcSo de C i r c u i t o s I n t e g r a d o s , e t c . , p o i s e s t e s requerem i n t e r f a c e s mais a m i g a v e i s , t r a n s a c o e s de l o n g a d u r a c a o , a b s t r a c a o de dados, v e r s o e s , deducao l o g i c a , nocSo de tempo, r e s t r i c S e s de i n t e g r i d a d e , e n t r e o u t r o s .
Desta f o r m a , r e q u e r - s e novos modelos de dados, p o r exemplo o modelo o r i e n t a d o a o b j e t o s [ A t k i n s o n 8 9 ] , em que novas t e c n i c a s , i n c l u s i v e de c o n t r o l e de c o n c o r r e n c i a , sao n e c e s s a r i e s .
Esses novos modelos de dados i n c o r p o r a m t i p o s a b s t r a t o s de dados. Com i s s o , essa abordagem consegue, a t r a v e s da e x p l o r a c a o da s e m a n t i c a d e s t e s t i p o s , u t i l i z a n d o a c o m u t a t i v i d a d e das operacoes e a b s t r a c a o de e s t a d o , um aumento s i g n i f i c a t i v e na p e r f o r m a n c e do c o n t r o l e de c o n c o r r e n c i a [Schwarz 84a, 8 4 b ] .
Alem do ganho de p a r a l e l i s m o com o p e r a c o e s t i p a d a s , podemos aumentar a i n d a mais a c o n c o r r e n c i a s e , ao i n v e s de c o n s i d e r a r m o s as operacoes t i p a d a s como i n d i v i s i v e i s , p e r m i t i r m o s que h a j a c o n c o r r e n c i a e n t r e as suboperacoes que implementam uma operacao t i p a d a . E v i d e n t e m e n t e , a c o e r e n c i a deve s e r m a n t i d a e, p o r t a n t o , deve h a v e r s i n c r o n i z a c g o e n t r e as s u b o p e r a c o e s . D e s t a
t r a n s a c S e s m u l t i n i v e i s [Weikum 87, B e e r i 88, Moss 8 2 ] .
E s t a abordagem m u l t i n i v e l e x p l o r a o p a r a l e l i s m o i n t e r n o das t r a n s a c o e s , que s&o formadas com operacoes t i p a d a s . Cada s u b t r a n s a c g o e uma u n i d a d e a t o m i c a , podendo em caso de f a l h a s e r r e c u p e r a d a e r e e x e c u t a d a sem comprometer a t r a n s a c a o como um t o d o . Assim, e s t a s t r a n s a c o e s m u l t i n i v e i s sao i n d i c a d a s p a r a modelos de dados o r i e n t a d o s a o b j e t o s , s i s t e m a s d i s t . r i b u i d o s e a p l i c a c o e s n & o - c o n v e n c i o n a i s .
E s t a d i s s e r t a c a o tern como o b j e t i v o i n i c i a l a p r e s e n t a r um e s t u d o s o b r e o c o n t r o l e de c o n c o r r e n c i a nos Bancos de Dados C o n v e n c i o n a i s , a p r e s e n t a n d o a t e o r i a e os d i v e r s o s mecanismos e x i s t e n t e s . A p a r t i r d a l , estudamos a abordagem m u l t i n i v e l , e n f a t i z a n d o sempre as v a n t a g e n s d e s t a abordagem com r e l a c & o aos metodos c o n v e n c i o n a i s . Como o b j e t i v o f i n a l e c o n t r i b u i c a o d e s t e t r a b a l h o , apresentamos um p r o t o c o l o de b l o q u e i o em duas f a s e s p a r a t r a n s a c S e s m u l t i n i v e i s . Neste p r o t o c o l o , i n c l u i m o s o e s t u d o de algumas h i p 6 t e s e s que a i n d a nao f o r a m abordadas p e l o s p e s q u i s a d o r e s da a r e a [Weikum 87, Moss 85, B a d r i n a t h 9 0 ] .
0 i n t e r e s s e de p r o p o r novas h i p o t e s e s v i s a a p r i m o r a r o modelo de t r a n s a c o e s m u l t i n i v e i s , no s e n t i d o de p r o v e r um m e l h o r a t e n d i m e n t o aos novos r e q u i s i t o s das a p l i c a c o e s nSo-c o n v e n nSo-c i o n a i s , preonSo-cupando-se nSo-com p e r f o r m a n nSo-c e e nSo-c o n f i a b i l i d a d e . Para i s s o , e s t a s h i p o t e s e s v i s a m d e i x a r o modelo de t r a n s a c S e s menos r e s t r i t i v o .
A o r g a n i z a c a o do r e s t a n t e d e s t a d i s s e r t a c a o da-se da s e g u i n t e forma : o c a p i t u l o 2 a p r e s e n t a um e s t u d o do e s t a d o da
a r t e do c o n t r o l e de c o n c o r r e n c i a noe Bancos de Dados C o n v e n c i o n a i s ; o c a p i t u l o 3 aborda o c o n t r o l e de c o n c o r r e n c i a sobre operacoes t i p a d a s , enfocando a c o m u t a t i v i d a d e ; o c a p i t u l o 4 e n f o c a a abordagem m u l t i n i v e l ; o c a p i t u l o 5 a p r e s e n t a o p r o t o c o l o de b l o q u e i o s em duas f a s e s m u l t i n i v e l ; p o r u l t i m o , o c a p i t u l o 6 f a z as c o n c l u s S e s do t r a b a l h o e sugere as p o s s i v e i s p e s q u i s a s que poderSo d a r c o n t i n u i d a d e a e s t a d i s s e r t a c a o .
2. CONTROLE DE CONCORRENCIA PARA BANCOS DE DADOS CONVENCIONAIS
2.1 I n t r o d u c a o
Neste c a p i t u l o , abordaremos o c o n t r o l e de c o n c o r r e n c i a noe Bancos de Dados C o n v e n c i o n a i s . A c o n s o l i d a c a o dos s i s t e m a s de Bancos de Dados C o n v e n c i o n a i s , c u j o s modelos s&o o h i e r a r q u i c o o de r e d e s e o r e l a c i o n a l [ O i l m a n 8 3 ] v i a b i l i z o u a r e a l i z a c a o de d i v e r s o s e s t u d o s no s e n t i d o de m e l h o r a r o c o n t r o l e de c o n c o r r e n c i a e n t r e t r a n s a c o e s . Por exemplo, B e r n s t e i n a p r e s e n t a v a r i o s metodos de c o n t r o l e de c o n c o r r e n c i a p a r a e s t a abordagem c o n v e n c i o n a l . [ B e r n s t e i n 8 1 ] 0 o b j e t i v o d e s t e c a p i t u l o e, i n i c i a l m e n t e , a p r e s e n t a r a t e o r i a do c o n t r o l e de c o n c o r r e n c i a p a r a a abordagem c o n v e n c i o n a l , e a i se e n c o n t r a m a d e f i n i c a o do modelo de t r a n s a c a o , s c h e d u l e ( i s t o e, uma execucao c o n c o r r e n t e de v a r i a s t r a n s a c o e s ) e a t e o r i a da s e r i a l i z a b i l i d a d e . Em s e g u i d a , expomos as p r i n c i p a l s t e c n i c a s u t i l i z a d a s p a r a p r o v e r um c o n t r o l e de c o n c o r r e n c i a n e s t a abordagem. A o r g a n i z a c a o d e s t e c a p i t u l o e s t a d i s p o s t a da s e g u i n t e forma : a secao 2.2 e n f o c a o modelo de t r a n s a c a o u t i l i z a d o , a secSo 2.3 a p r e s e n t a a d e f i n i c a o de um s c h e d u l e , a secao 2.4 aborda a t e o r i a da s e r i a l i z a b i l i d a d e , a secao 2.5 a p r e s e n t a o p r o t o c o l o de b l o q u e i o s em duas f a s e s [Eswaran 7 6 ] , a secfio 2.6 o mecanismo de t i m e s t a m p [ B e r n s t e i n 87, K o r t h 89, C e r i 8 4 ] , a sec8o 2.7 a p r e s e n t a o mecanismo o t i m i s t a [Kung 8 1 ] , a sec&o 2.8 a p r e s e n t a o p r o t o c o l o baseado no t e s t e do g r a f o de s e r i a l i z a c a o
[ B e r n s t e i n 87, S u g i h a r a 8 7 ] e, p o r u l t i m o , a secao 2.9 f a z uma b r e v e c o n c l u s & o da t e o r i a a p r e s e n t a d a no p r e s e n t e c a p i t u l o .
2.2 O Modelo de T r a n s a c a o
Enfocamos n e s t a secao o modelo de t r a n s a c a o a d o t a d o . Consideremos um d o m i n i o D = { x, y, z, ... } composto do c o n j u n t o f i n i t o de i t e n s de dado ( o b j e t o s ) . E n t a o , as o p e r a c o e s s o b r e os o b j e t o s p e r m i t i d o s no modelo com x 6 D e i 6 N, sao :
R i ( x ) : e a operacSo de l e i t u r a do o b j e t o x p e l a t r a n s a c a o i ; W±(x) : e a operacSo de gravacSo do o b j e t o x p e l a t r a n s a c a o i ; C i : e a c o n f i r m a c a o (Commit) da t r a n s a c a o i , ou s e j a , quando a t r a n s a c a o i e e x e c u t a d a t o t a l m e n t e ; A± : e o a b o r t o ( A b o r t ) da t r a n s a c a o i , ou s e j a , quando a execucao da t r a n s a c S o i 6 i n t e r r o m p i d a a n t e s de t o d a s as o p e r a c o e s t e r e m s i d o p r o c e s s a d a s p e l o s i s t e m a .
A n t e s de darmos a d e f i n i c & o do nosso modelo de t r a n s a c a o , apresentamos o c o n c e i t o de c o n f l i t o que s e r a de grande u t i l i d a d e . Duas operacoes estSo em c o n f l i t o se e l a s operam s o b r e um mesmo i t e m de dado, digamos x, e p e l o menos uma d e l a s 6 uma operacSo de gravacSo, i s t o e W ( x ) .
0 modelo de t r a n s a c S o e baseado em g r a v a c o e s i m e d i a t a s , i s t o e, uma operacSo de w r i t e a t u a d i r e t a m e n t e no Banco de Dados, ao i n v e s de gravacSes d e f e r i d a s onde uma operacao de w r i t e 6
armazenada em uma area p r i v a d a ( b u f f e r ) e so d e p o i s e t r a n s f e r i d a p a r a o Banco de Dados. Para um m a i o r a p r o f u n d a m e n t o n e s t e a s s u n t o , T u r c f a z uma comparacao e n t r e modelo com g r a v a c o e s i m e d i a t a s e modelo com g r a v a c o e s d e f e r i d a s . [ T u r c 9 0 ]
Podemos entSo d e f i n i r uma t r a n s a c a o T±, i G N como um p a r (OPi, < i ) [ H a d z i l a c o s 8 8 ] , onde :
1. OPi CT { R±(x), W i ( x ) , C i , A± } com x 6 D
2. <± e uma ordem p a r c i a l sobre 0P±
3. Q u a i s q u e r duas o p e r a c o e s de OPi em c o n f l i t o sSo o r d e n a d a s p o r <±, i s t o e, se a, b 6 OPi estSo em c o n f l i t o , entSo ou a < i b ou b < i a.
4. A± 6 OPi se, e somente se C i £ 0P±, i s t o e, uma t r a n s a c a o ou a b o r t a ou c o n f i r m a .
5. Se a G { A±, C± } entSo V b G OPi - { a } => b <± a; i s t o 6, o a b o r t o A± ou c o n f i r m a c S o C i sSo sempre a u l t i m a operacSo de uma t r a n s a c a o . Em o u t r a s p a l a v r a s , uma t r a n s a c a o t e r m i n a ou com um Commit ou com um A b o r t .
Uma t r a n s a c S o deve obedecer as s e g u i n t e s p r o p r i e d a d e s [ H a e r d e r 8 3 ] :
P I . ATOMICIDADE => Uma t r a n s a c a o e a t o m i c a se e x e c u t a t u d o ou nada, ou s e j a , se h o u v e r um Commit, entSo t o d o s os w r i t e s devem s e r p r o c e s s a d o s completamente e seus r e s u l t a d o s podem s e r r e t o r n a d o s ao u s u a r i o ; p o r o u t r o l a d o , se f o r a b o r t a d a , ent&o t o d o s os w r i t e s f e i t o s a t e o a b o r t o devem s e r d e s f e i t o s como ee a
t r a n s a c S o nSo t i v e s s e s i d o e x e c u t a d a .
P2. CONSISTENCIA => Uma t r a n s a c S o deve eempre obedecer Ss r e g r a s de i n t e g r i d a d e p a r a , quando e x e c u t a d a s o z i n h a e p o r c o m p l e t e nunca d e i x a r o Banco de Dados num e s t a d o i n c o n s i s t e n t e .
P3. ISQLAQAO => Eventos o c o r r i d o s d e n t r o de uma t r a n s a c S o devem s e r e s c o n d i d o s das demais t r a n s a c o e s e x e c u t a d a e c o n c o r r e n t e m e n t e , a t 6 que a p r i m e i r a c o n f i r m e .
P4. DURABILIDADE => Tambem chamada de p e r s i s t e n c i a . Quando uma t r a n s a c S o c o n f i r m a , suas a t u a l i z a c S e s nSo podem s e r d e s f e i t a s a nSo s e r p o r o u t r a t r a n s a c S o c o n f i r m a d a , e uma vez a b o r t a d a seus e f e i t o s nao podem r e a p a r e c e r .
2.3 Schedules
Tambem c o n h e c i d o na l i t e r a t u r e de Banco de Dados como H i s t o r i a s [ B e r n s t e i n 8 7 ] ou Logs [ H a d z i l a c o s 8 8 ] , um Schedule S e um c o n j u n t o p a r c i a l m e n t e ordenado de operacoes p e r t e n c e n t e s a um c o n j u n t o de t r a n s a c S e s .
Exemplo 2.1 : A execucao c o n c o r r e n t e das t r a n s a c S e s a b a i x o c o n s t i t u i um s c h e d u l e .
S = R i ( x ) ; R s ( y ) ; W i ( x ) ; C i ; W2( y ) ; C=
E
Entao podemos d e f i n i r um Schedule Completo S, s o b r e as t r a n s a c o e s T i , com l < i < N e N = niimero de t r a n s a c S e s de S,
como sendo uma ordem p a r c i a l (OPs, <s ) , onde :
1. OPs = U i§i 0P±; i s t o e, OPs 6 o c o n j u n t o de t o d a s as operacSes OPi das t r a n s a c S e s .
2. <s ZD <±, 1 < i < N, i s t o e, e x i s t e uma c o m p a t i b i l i d a d e e n t r e a ordem do Schedule e a ordem das t r a n s a c o e s . Ou s e j a , a ordem do Schedule, <s, nSo v a i mudar a ordem e s t a t i c a e n t r e operacSes de uma t r a n s a c S e s , < i .
3. Todas as operacSes em c o n f l i t o em OPs sSo ordenadas p o r <s.
Um Schedule ( i n c o m p l e t o ) e um p r e f i x o de um Schedule c o m p l e t e r e p r e s e n t a n d o uma p o s s i v e l execucao i n c o m p l e t a de t r a n s a c o e s [ H a d z i l a c o s 8 8 ] .
A n e c e s s i d a d e do Schedule i n c o m p l e t o da-se porque um Schedule Completo contem t o d a s as t r a n s a c S e s completadae e m u i t a s vezes p r e c i s a m o s de um Schedule que a n a l i s e passos i n t e r m e d i a r i e s da execuc&o das t r a n s a c S e s , como se num d e t e r m i n a d o momento n6s parassemos a execucSo p a r a a n a l i s a r a ordem das operacSes. Em o u t r a s p a l a v r a s , o Schedule e s t a r e l a c i o n a d o com t r a n s a c S e s a t i v a s , que sSo a q u e l a s que a i n d a nem c o n f i r m a r a m nem a b o r t a r a m .
Formalmente, dizemos que uma t r a n s a c S o e a t i v a se e somente se C± £ OPs e A i J3 OPs. U t i l i z a m o s g r a f o s d i r e c i o n a d o s p a r a r e p r e s e n t a r g r a f i c a m e n t e o comportamento (ordem) de um Schedule, onde os a r c o s i n d i c a m a ordem d e f i n i d a p o r <s. Por
exemplo, R±(x) -> W j ( x ) , l e -se R±(x) p r e c e d e W j ( x ) ou W j ( x ) segue R i ( x ) .
Exemplo 2.2 : Sejam as t r a n s a c o e s : T i = R x ( x ) -> W i ( x ) -> C i
Tz = R2( y ) -> W2( x ) -> W2( y ) -> Ca
EntSo um Schedule Completo S s e r i a :
R i ( x ) -> W i ( x ) -> C i S =
1
R2( y ) -> W2( x ) -> W2( y ) -> C2 Um Schedule I n c o m p l e t o , ou p r e f i x o de S, S' s e r i a R i ( x ) -> W i ( x ) -> C i S' =1
R2( y ) -> W2( x )E x i s t e m tambem Schedules com ordem t o t a l das o p e r a c o e s t a i s como :
R i ( x ) -> R2( x ) -> W i ( x ) -> C i -> W2( y ) -> W2( x ) -> C2,
podendo~se s u p r i m i r os a r c o s p a r a t a i s Schedules :
R i ( x ) R2( x ) W i ( x ) C i Ws(y) W2( x ) C2
Denotamos tambem Com(S) como sendo um Schedule Completo sobre o c o n j u n t o de t r a n s a c o e s c o n f i r m a d a s num dado i n s t a n t e .
2.4 S e r i a l i z a b i l i d a d e
um c r i t e r i o de c o r r e c S o de Schedules que i n t e r c a l a m v a r i a s t r a n s a c o e s [ B e r n s t e i n 8 7 ] . A n t e s de d e f i n i r m o s o que e um Schedule S e r i a l i z a v e l , p r e c i s a m o s de dues o u t r a s d e f i n i c S e s : Schedule s e r i a l e e q u i v a l S n c i a de Schedules.
Um Schedule S 6 uma execucSo s e r i a l , ou e i m p l e s m e n t e s e r i a l , se as t r a n s a c o e s sao e x e c u t a d a s uma ap6s o u t r a . Formalmente, sejam : t r ( S ) o c o n j u n t o de t r a n s a c o e s que estSo em S, a e b' G OPi - { A i , C± } entSo
podemos d i z e r que um Schedule Completo S e s e r i a l se :
V T e T' 6 t r ( S ) V a G O P T , V b'G O P T - a <s b' ou V a G O P T V b' 6 O P T - b' <s a.
Desde que assumimos em nosso modelo de t r a n s a c S o que a p r o p r i e d a d e de c o n s i s t e n c i a e v a l i d a p a r a uma t r a n s a c S o quando e s t a e e x e c u t a d a i s o l a d a m e n t e , entSo um Schedule s e r i a l e c o n s i s t e n t e . Exemplo 2.3 Sejam as t r a n s a c S e s : T i = R i ( x ) -> W i ( x ) -> C i Tz = R z ( x ) -> Wz(y) -> Wz(x) -> Cz
EntSo e x i s t e m duas p o s s i v e i s execucSes s e r i a l s (permutacSo de N, onde N e o numero de t r a n s a c S e s ) :
S i = R i ( x ) W i ( x ) C i R z ( x ) Wz(y) Wz(x) Cz
i s t o e : S i = T i ; Tz Sz = Tz ; T i onde T i ; T j s i g n i f i c a que T i e e x e c u t a d o i n t e i r a m e n t e a n t e s de T j . H D e f i n i r e m o s a s e g u i r a e q u i v a l e n c i a de c o n f l i t o e n t r e Schedules.
Dizemos que um Schedule S i e computacionalmente e q u i v a l e n t e a um Schedule Sz, denotado p o r S i = Sz, se
1. I n i c i a m com o mesmo e s t a d o do Banco de Dados e r e s u l t a m no mesmo e s t a d o f i n a l ;
2. t r ( S i ) = t r ( S z ) => OP»i = OP«z, i s t o e, e l e s tern o mesmo c o n j u n t o de t r a n s a c o e s e, consequentemente, t&m o mesmo c o n j u n t o de o p e r a c o e s ;
3. V a i 6 T i e bz 6 Tz, onde ou a i ou b i 6 w ( x ) , i s t o e, a i c o n f l i t a com b z , e A i , Az 0 S, entSo a i < o i bz se e somente se a i <sz bz ou bz < s i a i se e somente se bz <sz a i , i s t o e, a ordem de operacoes em c o n f l i t o de t r a n s a c S e s nfio a b o r t a d a s e a mesma em S i e Sz.
Exemplo 2.4: Sejam Si,Sz e S 3 os seguintes Schedules :
> C i
> Cz R i ( x ) > R i ( y ) > W i ( x )
-R i ( x ) -> -R i ( y ) -> W i ( x ) -> C: S2 = R2( y ) -> W2 x ) -> W2( y ) -> C: R i ( x ) -> R i ( y ) -> W i ( x ) -> C: S 3 = R2( y ) -> W2( x ) -> W2( y ) -> Cz
E n t a o , S i s S2 mas S 3 nao e e q u i v a l e n t s a nenhum
Agora podemos d e f i n i r um Schedule S e r i a l i z a v e l . Um Schedule e s e r i a l i z a v e l se e c o m p u t a c i o n a l m e n t e e q u i v a l e n t e a um Schedule S e r i a l , i s t o e, p r o d u z o mesmo r e s u l t a d o e o mesmo e f e i t o no Banco de Dados, que uma execucao s e r i a l do c o n j u n t o de t r a n s a c o e s t r ( S ) [ B e r n s t e i n 8 7 ] . ExemPlQ 2.7 Sejam as t r a n s a c o e s : T i = R i ( x ) W i ( x ) C i Tz = R2( y ) W2( x ) Cz P o r t a n t o os d o i s Schedules s e r i a l s p o s s i v e i s sSo : 5 1 = T i ; Tz e 52 = Tz ; T i Os Schedules s e r i a l i z a v e i s sao : S i e S2, p o i s t o d o Schedule s e r i a l e s e r i a l i z a v e l ; 5 3 = R i ( x ) R2( y ) W i ( x ) Wz(x) C i C2 54 = R2( y ) R i ( x ) W i ( x ) Wz(x) C i C2
Uma o u t r a m a n e i r a de v e r i f i c a r m o s se um Schedule e s e r i a l i z a v e l e a t r a v e s do g r a f o o b t i d o a t r a v e s do S c h e d u l e , o q u a l chamamos de Grafo de S e r i a l i z a c a o p a r a o Schedule, denotado por G ( S ) . E s t e g r a f o e d i r i g i d o e e d e f i n i d o como G(S) = (Com(S), - > ) , onde Com(S) sao os nodos do g r a f o r e p r e s e n t a n d o o c o n j u n t o de t r a n s a c o e s que c o n f i r m a r a m em S, e -> s&o os a r c o s , onde se T i -> T j , entSo t o d a s as o p e r a c o e s de T i , que c o n f l i t a m com operacoes de T j , o c o r r e r a m a n t e s das r e s p e c t i v a s operacoes de T j . Exemplo 2.8: S e j a o s e g u i n t e Schedule S R i ( x ) -> W i ( x ) -> C i ( T i ) S = R z ( x T ^ > ^ z ( x ) -> Ws(y) -> Cz ( T z ) R3( y ) -> W3( y ) -> C3 ( T3) EntSo o g r a f o de s e r i a l i z a c a o p a r a S s e r i a : T i G(S) = Tz
Uma vez d e f i n i d o o g r a f o de s e r i a l i z a c S o , podemos d a r uma nova d e f i n i c a o do que s e j a um Schedule S e r i a l i z a v e l . Dizemos que um Schedule S e s e r i a l i z a v e l se e somente se o g r a f o de s e r i a l i z a c a o p a r a S, G ( S ) , e a c l c l i c o [ B e r n s t e i n 87, H a d z i l a c o s 88, K o r t h 89, Casanova 85, C e r i 8 4 ] .
2.5 P r o t o c o l o de B l o q u e i o em Duas Fases
0 P r o t o c o l o de B l o q u e i o em Duas Fases ou P r o t o c o l o 2PL (do i n g l e s Two Phase L o c k i n g ) f o i p r o p o s t o i n i c i a l m e n t e p o r Eswaran e u t i l i z a a t e c n i c a de b l o q u e i o s p a r a s i n c r o n i z a r o acesso a dados c o m p a r t 1 l h a d o s , fazendo e s t a e i n c r o n i z a c S o de acordo com a t e o r i a da s e r i a l i z a b i l i d a d e . [Eswaran 7 6 ]
Antes de descrevermos e s t e p r o t o c o l o f a l a r e m o s um pouco da t e c n i c a de b l o q u e i o s que e o fundamento d e s t e p r o t o c o l o . Um b l o q u e i o e s o l i c i t a d o p o r uma t r a n s a c S o , quando e s t a q u e r t e r acesso a um d e t e r m i n a d o i t e m de dado. Uma vez a t e n d i d o o p e d i d o de b l o q u e i o , i s t o s i g n i f i c a r a que nenhuma o u t r a t r a n s a c a o , com operacSo c o n f l i t a n t e com o o b j e t o b l o q u e a d o , p o d e r a t e r acesso a e s t e o b j e t o b l o q u e a d o , a t e que a t r a n s a c S o que detem o b l o q u e i o l i b e r e - o . E x i s t e m d o i s t i p o s de b l o q u e i o s : o b l o q u e i o c o m p a r t i l h a d o , tambem chamado r e a d l o c k , e o b l o q u e i o e x c l u s i v o , tambem c o n h e c i d o como w r i t e l o c k .
Os b l o q u e i o s c o m p a r t i l h a d o s sao a q u e l e s s o b r e o p e r a c o e s nSo c o n f l i t a n t e s . Por exemplo, se uma t r a n s a c S o f a z um r e a d l o c k num o b j e t o , o u t r a s t r a n s a c o e s podem f a z e r r e a d l o c k s no o b j e t o , p o i s nSo ha c o n f l i t o , uma vez que as t r a n s a c o e s est&o apenas c o n s u l t a n d o os o b j e t o s , sem m o d i f i c a - l o s . E s t e b l o q u e i o p r o p i c i a uma m a i o r c o n c o r r e n c i a ao s i s t e m a .
Por o u t r o l a d o , os b l o q u e i o s e x c l u s i v o s sSo s o l i c i t a d o s quando uma t r a n s a c a o quer m o d i f i c a r um o b j e t o do Banco de Dados, ou s e j a , s&o os w r i t e l o c k s . D a i , nenhuma o u t r a t r a n s a c S o pode t e r acesso ao o b j e t o enquanto a t r a n s a c S o que p o s s u i o b l o q u e i o nSo
l i b e r a r e s t e o b j e t o .
0 P r o t o c o l o 2PL, como o p r o p r i o nome j a d i z , c o n s i s t e de duas f a s e s : a p r i m e i r a f a s e chamada f a s e de c r e s c i m e n t o e a segunda f a s e denominada f a s e de l i b e r a c a o . D u r a n t e a f a s e de c r e s c i m e n t o a t r a n s a c a o obtem os b l o q u e i o s nos o b j e t o s que vSo s e r p o r e l a u t i l i z a d o s . Na f a s e de l i b e r a c a o a t r a n s a c a o t e n d e a l i b e r a r t o d o s os b l o q u e i o s s o b r e os o b j e t o s a medida que nSo v a i mais u t i l i z a - l o s . Podemos d e d u z i r que, uma vez l i b e r a d o um u n i c o b l o q u e i o de um o b j e t o , a t r a n s a c a o nSo pode mais t e n t a r b l o q u e a r q u a i s q u e r o b j e t o s [Casanova 85, K o r t h 8 9 ] .
Para p r o v a r a c o r r e c a o do P r o t o c o l o 2PL e s u f i c i e n t e provarmos que um Schedule p r o d u z i d o p o r e s t e p r o t o c o l o e s e r i a l i z a v e l . Ou s e j a , p e l o teorema da S e r i a l i z a b i l i d a d e [ B e r n s t e i n 8 7 ] , p r e c i s a m o s p r o v a r que o g r a f o G ( S ) , onde S e o Schedule, e a c i c l i c o . S e j a S um Schedule p r o d u z i d o p e l o 2PL S c h e d u l e r . Sejam L i ( x ) a operacao de s o l i c i t a c a o de b l o q u e i o do o b j e t o x p e l a t r a n s a c S o i ; O p i ( x ) uma operacao de r e a d ou w r i t e s o b r e o o b j e t o x p e l a t r a n s a c a o i ; e U±(x) a operacao de l i b e r a c a o do b l o q u e i o do o b j e t o x p e l a t r a n s a c a o i . EntSo temos as s e g u i n t e s p r o p r i e d a d e s :
P I . Se O p i ( x ) G Com(S), entSo L±(x) e U i ( x ) 6 Com(S) e L±(x) < O p i ( x ) < U i ( x ) ; i s t o e, uma t r a n s a c S o a n t e s de t e r acesso a um o b j e t o deve b l o q u e a - l o e, apos u s a - l o , deve l i b e r a - l o .
operacoes c o n f l i t a n t e s e n t a o ou U i ( x ) < L j ( x ) ou U j ( x ) < L±(x), i s t o e, e x i s t e uma ordem t o t a l e n t r e as operacSes em c o n f l i t o g a r a n t i n d o um acesso e x c l u s i v o ao o b j e t o .
P3. S e j a S um Schedule c o m p l e t o p r o d u z i d o p o r um 2PL S c h e d u l e r . Se q u a i s q u e r Op±(x) e O p i ( y ) G Com(S), entSo L±(x) < U i ( y ) , i s t o e, uma t r a n s a c a o deve s o l i c i t a r t o d o s os b l o q u e i o s a n t e s de comecar a l i b e r a r b l o q u e i o s .
Para provarmos a s e r i a l i z a b i l i d a d e de um Schedule p r o d u z i d o p o r um 2PL S c h e d u l e r , podemos s u p o r que o g r a f o G(S) tern um c i c l o , T I -> T2 -> ... -> Tn -> T I . P e l a p r o p r i e d a d e P3, T I deve s o l i c i t a r t o d o s os b l o q u e i o s a n t e s de comecar a l i b e r a
-l o s , porem se houver t a -l c i c -l o c r i a - s e uma c o n t r a d i c S o p o i s : L i ( x ) < U i ( x ) < L i ( y ) , p o r t a n t o e s t e c i c l o nao e p e r m i t i d o p e l o p r o t o c o l o . P o r t a n t o , como G(S) nao contem c i c l o s , p e l a segunda d e f i n i c & o de s e r i a l i z a b i l i d a d e temos que S e s e r i a l i z a v e l
[Casanova 8 5 ] .
0 p o n t o de t r a n s i c a o da f a s e de c r e s c i m e n t o p a r a f a s e de l i b e r a c a o e chamado ponto de bloqueio. E l e d e t e r m i n e a ordem de s e r i a l i z a c a o do Schedule. I s t o o c o r r e porque quando uma t r a n s a c a o T i a t i n g e seu p o n t o de b l o q u e i o , t o d a s as o u t r a s t r a n s a c o e s que n e c e s s i t e m dos o b j e t o s b l o q u e a d o s p o r T± devem e s p e r a r a t e que sejam l i b e r a d o s e s t e s o b j e t o s , f a z e n d o com que a t r a n s a c a o T i que c o n s e g u i u a t i n g i r seu p o n t o de b l o q u e i o p r i m e i r o s e j a p r e c e d e n t e na ordem de execucao. No g r a f o de s e r i a l i z a c & o , se e x i s t i r um a r c o de T± p a r a T j quer d i z e r que T± a t i n g i u seu p o n t o de b l o q u e i o a n t e s de T j .
Reeumindo, poderiamos d i z e r que se duas t r a n s a c o e s c o n f l i t a m , a q u e l a que a t i n g i r o p o n t o de b l o q u e i o p r i m e i r o t e r a p r e c e d e n c i a de execucao em r e l a c a o a o u t r a .
Dessa forma, o Schedule ordena as t r a n s a c o e s p e l o s seus r e s p e c t i v o s p o n t o s de b l o q u e i o , d e t e r m i n a n d o uma ordem t o t a l sobre as operacSes em c o n f l i t o .
Com o i n t u i t o de p r o v e r uma m a i o r c o n c o r r e n c i a pode-se u t i l i z a r as chamadas c o n v e r s o e s de b l o q u e i o , i s t o 6, uma t r a n s a c a o obtem um b l o q u e i o c o m p a r t i l h a d o sobre um o b j e t o e d e p o l s e l e v a esse b l o q u e i o p a r a o modo e x c l u s i v e ou v i c e - v e r s a , uma t r a n s a c S o p o s s u i um b l o q u e i o sobre um o b j e t o no modo e x c l u s i v e e d e p o i s a b a i x a e s t e b l o q u e i o p a r a o modo c o m p a r t i l h a d o . E i m p o r t a n t e n o t a r que e s t a s c o n v e r s S e s nao sao a r b i t r a r i a s , ou s e j a , a e l e v a c S o deve a c o n t e c e r na f a s e de c r e s c i m e n t o , enquanto que o abaixamento deve a c o n t e c e r apenas na f a s e de l i b e r a c S o .
Este m a i o r g r a u de p a r a l e l i s m o e p r o p i c i a d o porque uma t r a n s a c S o , ao i n v e s de b l o q u e a r um o b j e t o no modo e x c l u s i v o l o g o no i n i c i o de sua execucSo, f a z um b l o q u e i o c o m p a r t i l h a d o sobre o o b j e t o , p e r m i t i n d o que o u t r a s t r a n s a c S e s tenham acesso c o n c o r r e n t e ao o b j e t o b l o q u e a d o e, apenas quando a t r a n s a c a o q u i s e r m o d i f i c a r o o b j e t o b l o q u e a d o , e l a s o l i c i t a uma conversSo de b l o q u e i o p a r a o modo e x c l u s i v o .
0 grande problema d e s t e p r o t o c o l o de b l o q u e i o em duas f a s e s e que e l e e s u s c e p t i v e l a b l o q u e i o s mutuos, c o n h e c i d o s como d e a d l o c k s , que s i m p l e s m e n t e p a r a l i s a m a execucSo das t r a n s a c S e s
e n v o l v i d a s no d e a d l o c k , p o i s c r i a - s e um impasse d e v i d o as t r a n s a c S e s que f i c a m esperando p o r l i b e r a c o e s que nunca o c o r r e r & o . Alem d i s s o , um d e a d l o c k impSe um b l o q u e i o i n f i n i t o dos o b j e t o s que e s t a o b l o q u e a d o s p e l a s t r a n s a c o e s em d e a d l o c k , de forma que nenhuma o u t r a t r a n s a c a o pode t e r acesso a e s t e s o b j e t o s . Na p r o x i m a sec&o faremos um e s t u d o d e s t e p r o b l e m a .
2.5.1 Deadlocks
Um s i s t e m a e s t a em d e a d l o c k quando se tern, p e l o menos, uma sequSncia de t r a n s a c o e s , T i , T2,...,T», onde T± e s p e r a p o r uma l i b e r a c a o de T c i + i modi n ) , i = l , . . . , n ; de f o r m a que nenhuma das T i t e r m i n a r a sem que h a j a uma i n t e r f e r e n c i a do s c h e d u l e r p a r a r e s o l v e r o impasse. Exemplo 2.7 Sejam os s e g u i n t e s t r e c h o s de t r a n s a c o e s , c o n s i d e r a n d o b l o q u e i o s e x c l u s i v o s : T i = L i ( x ) L i ( y ) Tz = L z ( y ) L z ( x ) e s e j a o s e g u i n t e Schedule : S = L i ( x ) L z ( y ) L i ( y ) Lz(x), e n t a o o Schedule S p r o v o c o u um d e a d l o c k , p o i s a t r a n s a c a o T i b l o q u e i a o o b j e t o x e f i c a esperando p e l o b l o q u e i o do o b j e t o y que e s t a bloqueado p e l a t r a n s a c a o Tz, que, p o r sua v e z , e s t a esperando p e l o b l o q u e i o do o b j e t o x, que e s t a com a t r a n s a c a o T i , d a i c r i a n d o - s e o impasse. Devemos n o t a r que no Schedule acima as
operacSes de p e d i d o de b l o q u e i o L i ( y ) e Ls(y) nSo chegam a s e r e x e c u t a d a s e f i c a m esperando.
D
E x i s t e m duas t e c n i c a s p a r a l i d a r com d e a d l o c k s : uma que p r e v i n e os d e a d l o c k s , i s t o e, nSo os d e i x a o c o r r e r , e a o u t r a t e c n i c a que d e t e c t a quando um d e a d l o c k o c o r r e e s o l u c i o n a o impasse. A t e c n i c a de prevencao e mais u t i l i z a d a quando a i n c i d e n c i a de d e a d l o c k s e m u i t o g r a n d e , enquanto que a t e c n i c a de d e t e c g a o / r e s o l u c & o e adequada quando e s t a i n c i d e n c i a e pequena.
Ambas as t e c n i c a s imprimem um "overhead" de execucao ao mecanismo de c o n t r o l e de c o n c o r r e n c i a , o q u a l deve s e r o mlnimo p o s s i v e l .
2.5.1.1 Prevencao de Deadlocks
E x i s t e m v a r i a s t e c n i c a s p a r a se p r e v e n i r d e a d l o c k s , c i t a m o s algumas d e l a s :
B l o q u e a r t o d o s os o b j e t o s a serem usados, a n t e s de i n i c i a r a execucao, a t r a v e s de uma p r e - c o m p i l a c a o . Se nao se c o n s e g u i r t o d o s os b l o q u e i o s de que se n e c e s s i t a , e n t a o a t r a n s a c a o deve s e r r e p e t i d a . E s t a e a m a n e i r a mais s i m p l e s de i m p l e m e n t a r a prevencao de d e a d l o c k s porem, e x i s t e m d o i s p r o b l e m a s : o p r i m e i r o e o b a i x o p a r a l e l i s m o que e s t a t e c n i c a pode p r o v e r , p o i s mesmo que uma t r a n s a c S o u t i l i z e um o b j e t o p o r pouco tempo, e s t e e bloqueado d u r a n t e t o d a a execucao da t r a n s a c a o ( 2PL E s t r i t o ) . 0 o u t r o p r o b l e m a e mais s e r i o , p o i s
pode s e r que uma t r a n s a c a o f i q u e esperando i n d e f i n i d a m e n t e p o r um o b j e t o que e s t a sempre a l o c a d o .
. Um o u t r o metodo e impor uma ordenacao t o t a l de t o d o s os o b j e t o s e e x i g i r que as t r a n s a c o e s b l o q u e i e m o b j e t o s somente n e s t a ordem.
O u t r o s metodos u t i l i z a m preempcao e r e p e t i c a o de t r a n s a c o e s . Para i s s o , deve-se a t r i b u i r um t i m e s t a m p ( s e n h a ) u n i c o a cada t r a n s a c a o [ L a m p o r t 7 8 ] . Se uma t r a n s a c S o e r e p e t i d a , e l a permanece com seu t i m e s t a m p a n t e r i o r . E x i s t e m d o i s metodos que u t i l i z a m e s t a t e c n i c a [ B e r n s t e i n 8 7 ] :
1. w a i t - d i e ( e s p e r a - morre ) => E uma t e c n i c a nao-p r e e m nao-p t i v a , onde uma t r a n s a c a o T i e s nao-p e r a nao-p o r o u t r a T j que r e t e m o o b j e t o d e s e j a d o se T± t i v e r um t i m e s t a m p menor que o t i m e s t a m p de
T j , caso c o n t r a r i o T i e a b o r t a d a e d e p o i s r e p e t i d a com o mesmo
t i m e s t a m p .
Exenrplo 2.8 Sejam T i e T2 t r a n s a c o e s com t i m e s t a m p T S ( T i ) = 5 e T S ( T 2 ) = 10. Se T i q u i s e r um o b j e t o b l o q u e a d o p o r
T2, e n t a o como T S ( T i ) < T S ( T 2 ) , T i e s p e r a . Por o u t r o l a d o , se Tz
q u i s e r um o b j e t o bloqueado p o r T i ent&o, como T S ( T 2 ) > T S ( T i ) , T2 e r e p e t i d a com o mesmo t i m e s t a m p .
0
2. wound - w a i t ( f e r e - e s p e r a ) => E uma t e c n i c a p r e e m p t i v a onde se uma t r a n s a c a o T± q u i s e r um o b j e t o b l o q u e a d o p o r o u t r a t r a n s a c a o T j e o t i m e s t a m p (TS) de T± f o r m a i o r que o t i m e s t a m p de T j entSo T± e s p e r a p e l a l i b e r a c a o do o b j e t o , caso c o n t r a r i o , T j e r e p e t i d a , ou s e j a T j e ' " f e r i d a " p o r T i .ExemplQ 2,9 Seja T i com T S ( T i ) = 5 e T2 com T S ( T2) = 10. Se T i q u i s e r um o b j e t o bloqueado p o r T2, como T S ( T i ) < T S ( T s ) , e n t a o o o b j e t o t e r a preempcao de T2 e T2 s e r a r e p e t i d a . Por o u t r o l a d o , se T2 q u i s e r um o b j e t o b l o q u e a d o p o r T i , como T S ( T2) > T S ( T i ) e n t a o T2 e s p e r a r a p e l a l i b e r a c a o do o b j e t o b l o q u e a d o p o r T i .
Um p r o b l e m a com esses metodos que u t i l i z a m o c o n c e i t o de p r e e m p c a o / r e p e t i g a o e que podem o c o r r e r algumas r e p e t i c S e s d e s n e c e s s a r i a s .
2.5.1.2 Detecc&o e ResolucSo de Deadlocks
Se o s i s t e m a p e r m i t i r a o c o r r e n c i a de d e a d l o c k s , deve p r o v e r um mecanismo p a r a d e t e c t a r e r e s o l v e r o impasse. Para i s s o , um a l g o r i t m o e e x e c u t a d o p e r i o d i c a m e n t e p a r a d e t e r m i n e r se o c o r r e u d e a d l o c k ; caso p o s i t i v e deve r e s o l v g - l o . Uma m a n e i r a b a s t a n t e r u s t i c a de i m p l a n t a r e s t e mecanismo e o timeout, i s t o e, o s c h e d u l e r d e t e r m i n e um tempo l i m i t e que uma t r a n s a c a o pode e s p e r a r p o r um b l o q u e i o . Se e s t e l i m i t e f o r e s g o t a d o , ent&o o s c h e d u l e r supoe que ha um d e a d l o c k e, p o r t a n t o , a b o r t a a t r a n s a c a o .
Este metodo pode i n c o r r e r num e r r o , p o i s e l e pode supor que uma t r a n s a c a o e s t a em d e a d l o c k e p o r t a n t o , a b o r t a - l a , quando na verdade e l a e s t a esperando p o r uma l i b e r a c a o do b l o q u e i o do o b j e t o de o u t r a t r a n s a c a o . 0 p r o b l e m a d e s t a t e c n i c a e e s p e c i f i c a r q u a l o tempo i d e a l p a r a o t i m e o u t .
O u t r a t e c n i c a p a r a d e t e c t a r o d e a d l o c k e quando o s c h e d u l e r c o n t r 6 i um g r a f o d i r i g i d o chamado g r a f o w a i t - f o r , que c o n s i s t e num p a r G = ( N, A ) onde N e o c o n j u n t o de nodos, que sfio t o d a s as t r a n s a c o e s , e A e o c o n j u n t o de a r c o s , onde cada a r c o e um p a r ordenado ( T i , T j ) , que i n d i c a que a t r a n s a c a o T± e s t a esperando que a t r a n s a c a o T j l i b e r e um o b j e t o de que T± p r e c i s e . 0 d e a d l o c k e d e t e c t a d o quando o g r a f o contem um c i c l o .
Exemplo 2.10 Sejam os s e g u i n t e s t r e c h o s de t r a n s a c S e s , c o n s i d e r a n d o b l o q u e i o s e x c l u s i v o s :
T i = L i ( x ) ; L i ( y ) ; ... Tz = L z ( y ) ; L z ( x ) ; ...
Supondo o s e g u i n t e Schedule de execucao :
S = L i ( x ) ; L z ( y ) ; L z ( x ) ; L i ( y ) ;
e n t f i o o g r a f o w a i t - f o r s e r i a :
G = T i -> Tz -> T i ,
havendo um c i c l o e consequentemente um d e a d l o c k . n
0 p r o b l e m a d e s t a t e c n i c a e saber com que f r e q u e n c i a deve-se a p l i c a r o a l g o r i t m o de d e t e c c a o do c i c l o no g r a f o . Ademais, nos s l t e m a s d i s t r i b u i d o s , a c o n s t r u c a o d e s t e g r a f o e m u i t o d i s p e n d i o s a .
Uma vez d e t e c t a d o o d e a d l o c k , o s c h e d u l e r deve r e s o l v e -l o . Para i s s o , deve-se e s c o -l h e r uma v i t i m a que quebre o impasse, r e p e t i n d o e s t a t r a n s a c & o . E i m p o r t a n t e s a l l e n t a r que, p o r
questOes de p e r f o r m a n c e , e m e l h o r r e p e t i r t r a n s a c S e s que i n c o r r e r & o no menor c u s t o . Apds d e c i d i r q u a l e a v i t i m a , deve-se d e t e r m i n a r se a r e p e t i c a o deve s e r t o t a l ( r e i n l c i o da execucSo da t r a n s a c a o ) ou se a r e p e t i c S o deve s e r apenas o s u f i c i e n t e p a r a q u e b r a r o impasse.
Alem d i s s o , deve-se p r e v e r que a e s c o l h a da v i t i m a nao r e c a i a sempre sobre uma mesma t r a n s a c S o , p o i s i n c o r r e r i a no r i s c o d e s t a t r a n s a c S o nunca s e r e x e c u t a d a , o que s e r i a i n a d m i s s i v e l . Para i s s o , pode-se c o l o c a r no c a l c u l o do c u s t o o numero de r e p e t i c S e s j a e f e t u a d a s p o r uma t r a n s a c S o [ B e r n s t e i n 8 7 ] .
2.6 OrdenacSo por TIMESTAMP
Uma o u t r a t e c n i c a e x i s t e n t e que tambem e u t i l i z a d a no c o n t r o l e de c o n c o r r e n c i a e a OrdenacSo por Timestamp que c o n s i s t e de um ordenamento p r e v i o , t o t a l e e s t r i t o , das t r a n s a c S e s de acordo com o v a l o r do t i m e s t a m p . I s t o e f e i t o p e l o Sistema G e r e n c i a d o r de Banco de Dados que a t r i b u i um t i m e s t a m p ( s e n h a ) u n i c o e f i x o no s i s t e m a p a r a cada t r a n s a c a o , no i n s t a n t e em que e s t a e c r i a d a .
Este numero pode s e r a t r i b u i d o de d i v e r s a s m a n e i r a s , e n t r e as q u a i s pode-se u t i l i z e r o p r 6 p r i o r e l o g i o do s i s t e m a p a r a marcar as t r a n s a c S e s ou um c o n t a d o r 1 6 g i c o g e r e n c i a d o p e l o Sistema G e r e n c i a d o r de Banco de Dados que e i n c r e m e n t a d o a cada t r a n s a c S o c r i a d a [ K o r t h 89, Lamport 7 8 ] .
E s t a t e c n i c a de ordenacao p o r t i m e s t a m p d e f i n e uma ordem t o t a l e n t r e as t r a n s a c o e s de forma que, se duas t r a n s a c o e s c o n f l i t a m , e n t a o e s t e c o n f l i t o e r e s o l v i d o p e l o t i m e s t a m p de cada t r a n s a c S o .
Denotaremos o t i m e s t a m p a t r i b u i d o a uma t r a n s a c S o T± q u a l q u e r p o r T S ( T i ) , que, como mencionamos a n t e r i o r m e n t e , c o n s i s t e de um numero u n i c o e f i x o no s i s t e m a .
P o r t a n t o , se t i v e r m o s duas t r a n s a c o e s d i s t i n t a s , i s t o e, T i ? T j , entSo ou T S ( T i ) < T S ( T j ) ou T S ( T i ) > T S ( T j ) , i s t o e, e x i s t e uma ordem e s t i p u l a d a p r e v i a m e n t e p e l o s i s t e m a nas execucoes das t r a n s a c o e s .
Basicamente, o p r o t o c o l o de ordenacao p o r t i m e s t a m p f u n c i o n a da s e g u i n t e m a n e i r a : p a r a cada o b j e t o 0 do Banco de Dados, o s i s t e m a mantem duas v a r i a v e i s ,
W_time8tamp(0) -> V a r i a v e l que armazena o v a l o r do t i m e s t a m p da u l t i m a t r a n s a c S o que m o d i f i c o u o o b j e t o 0.
H_timestamp(0) -> V a r i a v e l que armazena o v a l o r do t i m e s t a m p da u l t i m a t r a n s a c S o que l e u o o b j e t o 0. EntSo se uma t r a n s a c S o T± e e s c a l o n a d a e d e s e j a l e r o v a l o r de um d e t e r m i n a d o o b j e t o 0, o s i s t e m a procede da s e g u i n t e forma : 1. Se o t i m e s t a m p da t r a n s a c S o T±, que e s t a querendo l e r o o b j e t o 0, f o r menor que o v a l o r da v a r i a v e l W _ t i m e s t a m p ( 0 ) , em o u t r a s p a l a v r a s , T S ( T i ) < W _ t i m e s t a m p ( 0 ) , entSo a operacSo de l e i t u r a deve s e r r e j e i t a d a p o i s e s t a t r a n s a c S o T i "chegou
a t r a s a d a " . Desta f o r m a , a t r a n s a c S o T i deve s e r r e p e t i d a . 2. Se o t i m e s t a m p da t r a n s a c a o T i , que e s t a querendo l e r o o b j e t o 0, f o r m a i o r ou i g u a l ao v a l o r da v a r i a v e l W _ t i m e s t a m p ( 0 ) , i s t o e, T S ( T i ) > W _ t i m e s t a m p ( 0 ) , e n t a o a operacao de l e i t u r a do o b j e t o 0 e e x e c u t a d a e a v a r i a v e l R_.timestamp e a t u a l i z a d a p a r a o maximo e n t r e os v a l o r e s R _ t i m e s t a m p ( 0 ) e T S ( T i ) . Pensando em t e r m o s de a l g o r i t m o t e r i a m o s : n& TS(T±) < W_timestamp(0) exLtaQ R e p i t a T i i n l c i o READ(0); R _ t i m e s t a m p ( 0 ) := M A X ( R _ t i m e s t a m p ( 0 ) , T S ( T i ) )
onde MAX(x,y) e uma funcSo que r e t o r n a o m a i o r v a l o r e n t r e x e y.
Devemos o b s e r v e r que como uma operacao de l e i t u r a c o n f l i t a apenas com uma operacao de gravacSo, c o n f l i t o r e a d -w r i t e , fazemos a v e r i f i c a c a o apenas da v a r i a v e l W _ t i m e s t a m p ( 0 ) , p o i s a v a r i a v e l R _ t i m e s t a m p ( 0 ) nao p r e c i s e s e r v e r i f i c a d a .
Por o u t r o l a d o , suponhamos agora que uma t r a n s a c S o T i d e s e j e e f e t u a r uma gravacSo num o b j e t o 0, i s t o e w r i t e ( O ) , d a i temos o s e g u i n t e p r o c e d i m e n t o :
1. Se o t i m e s t a m p da t r a n s a c S o T i , T S ( T i ) , f o r menor do que o v a l o r da v a r i a v e l R _ t i m e s t a m p ( 0 ) , i s t o e, T S ( T i ) < R _ t i m e s t a m p ( 0 ) , entSo i s t o quer d i z e r que a a t u a l i z a c a o "chegou a t r a s a d a " . I s t o i m p l i c a r a na r e j e i c S o da operacSo de gravacSo
2. Se o t i m e s t a m p da t r a n s a c S o T i , T S ( T i ) , f o r menor do que o v a l o r da v a r i a v e l W _ t i m e s t a m p ( 0 ) , i s t o e, T S ( T i ) < W _ t i m e s t a m p ( 0 ) , e n t a o a operacSo de g r a v a c S o , w r i t e ( O ) , deve s e r
r e j e i t a d a p o i s e s t a o b s o l e t a . E n t r e t a n t o , e s t a operacSo de gravacSo pode s e r ignorada, segundo a Regra de gravacSo de Thomas
[Thomas 7 9 ] que d i z que quando t i v e r m o s T S ( T i ) < W_timestamp(0) e a operacSo e um W r i t e ( O ) , entSo ao i n v e s de r e j e i t a r m o s a operacSo de gravacSo devemos s i m p l e s m e n t e i g n o r a - l a , i s t o da uma o t i m i z a c a o ao s c h e d u l e r .
3. Caso c o n t r a r i o , i s t o e, T S ( T i ) > R _ t i m e s t a m p ( 0 ) e T S ( T i ) > W_timestamp(0) ent&o a operacSo de g r a v a c S o , w r i t e ( O ) , deve s e r e x e c u t a d a e a v a r i a v e l W_timestamp(0) r e c e b e o v a l o r de T S ( T i ) . Pensando em t e r m o s de a l g o r i t m o t e r i a m o s : ae. T S ( T i ) < R _ t i m e s t a m p ( 0 ) e j l i l Q REPITA T i fi^ T S ( T i ) ^ W_timestamp(0) W_timestamp(0) := TS(T±); WRITE(O);
Seja&o. { Regra de Thomas }
JLimae tlmss.
0 mesmo a l g o r i t m o de gravacSo sem c o n s i d e r a r a r e g r a de Thomas s e r i a : fie. T S ( T i ) < R _ t i m e s t a m p ( 0 ) ou T S ( T i ) < W_timestamp(0) enMQ REPITA T i fieMi} i n i c l Q WRITE(O); W_timestamp(0) := TS(T±) £lm limae.
deve-se c o n s i d e r a r as duas v a r i a v e i s R _ t i m e s t a m p ( 0 ) e W _ t i m e s t a m p ( 0 ) , p o s t o que uma operacSo de gravacao c o n f l i t a t a n t o com uma operacao de l e i t u r a , c o n f l i t o r e a d - w r i t e , q u a n t o de g r a v a c a o , c o n f l i t o w r i t e - w r i t e .
S a l i e n t a m o s tambem que quando uma t r a n s a c a o e r e p e t i d a , recebe um novo t i m e s t a m p quando do seu r e i n i c i o , o que a t o r n a i m p r o v a v e l de s e r r e p e t i d a i n d e f i n i d a m e n t e .
Exemplo 2.11 : Suponhamos as s e g u i n t e s t r a n s a c o e s : T i = R i ( x ) ; R i ( y ) ; W i ( x ) ; C i
T2 = R s ( y ) ; R2( x ) ; W2( y ) ; W2( x ) ; C2
e n t a o dado que T S ( T i ) < T S ( T2) , podemos t e r o s e g u i n t e escalonamento S :
S = R i ( x ) ; R i ( y ) ; R2( y ) ; R2( x ) ; W2( y ) ; W2( x ) ; Wi(x)\ C i ; Cz
onde a u l t i m a operacSo Wi(x) e i g n o r a d a . Porem o s e g u i n t e escalonamento S' nao e p o s s i v e l : S' = R i ( x ) ; R i ( y ) ; R2( y ) ; R2( x ) ; W i ( x ) ; W2( y ) ; W2( x ) ; C i ; Cz, p o i s n e s t e caso a operacao W i ( x ) s e r i a r e j e i t a d a e T i s e r i a r e p e t i d a v i s t o que T S ( T i ) < R _ t i m e s t a m p ( x ) = T S ( T z ) . S
Um problema p r o v e n i e n t e do metodo de ordenacao p o r Timestamp d e s c r i t o acima e que e l e e s u s c e p t i v e l a a b o r t o s em c a s c a t a conforme exemplo a s e g u i r .
Exemplo 2.12 : S e j a o s e g u i n t e s c h e d u l e S, com T S ( T z ) > T S ( T i ) :
S = R i ( x ) ; W i ( x ) ; R z ( x ) ; Cz
Como vemos, a t r a n s a c a o Tz 1§ um v a l o r e s c r i t o p o r T i sendo que a t r a n s a c a o Tz e c o n f i r m a d a , porem a t r a n s a c S o T i n&o o e. I s t o pode c a u s a r uma s i t u a c a o i r r e c u p e r a v e l caso a t r a n s a c a o T i venha a a b o r t a r .
n
A s o l u g a o p a r a e s t e p r o b l e m a 6 a OrdenacSo por Timestamp E s t r i t a , que c o n s i s t e em p e r m i t i r l e i t u r a s de o b j e t o s g r a v a d o s p o r o u t r a s t r a n s a c o e s apenas se e s t a s u l t i m a s f o r e m c o n f i r m a d a s . Desse modo, se uma t r a n s a c a o quer l e r um v a l o r que f o i e s c r i t o p o r o u t r a t r a n s a c a o , a p r i m e i r a deve e s p e r a r que a segunda t e r m i n e a t r a v e s de uma c o n f i r m a c a o ou de um a b o r t o .
Exemplo 2.13 : Seguindo o exemplo 2.12 d e v e r i a m o s t e r o s e g u i n t e Schedule :
S = R i ( x ) ; W i ( x ) ; C i ; R z ( x ) ; Cz ffi
V a l e s a l i e n t a r tambem que, se a t r a n s a c a o Tz do exemplo 2.12 ao i n v e s de e x e c u t a r uma operacao de R z ( x ) , e x e c u t a s s e um W z ( x ) , t o r n a r - s e - i a uma s i t u a c a o de complexa r e c u p e r a c & o , p o i s , caso a t r a n s a c a o T i a b o r t a s s e , d e v e r - s e - i a i g n o r a r a r e c u p e r a c & o p a r a T i uma vez que o o b j e t o x j a t e r i a s i d o , d e p o i s , a t u a l i z a d o p o r Tz.
d i f l c i l p a r a o mecanismo de recuperacSo saber q u a l o v a l o r que o o b j e t o x t i n h a a n t e s de s e r m o d i f i c a d o p e l a p r i m e i r a t r a n s a c a o . E s t a s i t u a c a o nao causa a b o r t o em c a s c a t a , porem r e q u e r um mecanismo de r e c u p e r a c a o b a s t a n t e complexo. Por i s s o , a l g u n s a u t o r e s requerem ordenacao p o r t i m e s t e m p e s t r i t a p a r a p r e c e d e n c i e s w r i t e - w r i t e . I s t o quer d i z e r que, uma g r a v a c a o de um o b j e t o que f o i gravado p o r o u t r a t r a n s a c a o so s e r a p e r m i t i d o , se e s t a u l t i m a f o r c o n f i r m a d a ou a b o r t a d a .
2-7 Uma T e c n i c a O t i m i s t a
Vimos que os p r o t o c o l o s mencionados a n t e r i o r m e n t e q u a i s sejam, B l o q u e i o em Duas Fases e Ordenacao p o r Timestamp, impSem um c e r t o "overhead" p a r a e s c a l o n a r as t r a n s a c o e s , o que c e r t a m e n t e l e v a a um a t r a s o m a i o r n e s t e escalonamento. 0 P r o t o c o l o de B l o q u e i o em Duas Fases f a z com que as t r a n s a c S e s f i q u e m esperando p e l a l i b e r a c a o dos o b j e t o s , enquanto que o p r o t o c o l o de Ordenacao p o r Timestamp f a z a r e j e i c a o de t r a n s a c S e s em c o n f l i t o que nao podem s e r e s c a l o n a d a s .
E s t a secao aborda uma nova t e c n i c a c o n h e c i d a p o r T e c n i c a O t i m i s t a [Kung 8 1 ] , que p a r t e da h i p 6 t e s e de que o c o n j u n t o de t r a n s a c S e s e formado em sua m a i o r i a p o r t r a n s a c S e s de c o n s u l t a , i s t o e, a q u e l a s que apenas leem os o b j e t o s do Banco de Dados, t o r n a n d o a t a x a de c o n f l i t o s m u i t o b a i x a .
Este novo metodo t e n t a d i m i n u i r o "overhead" causado p e l o s o u t r o s p r o t o c o l o s , a t r a v e s da execucao de t o d a s as
t r a n s a c o e s a t e o f i m , sendo que as p o s s i v e i s a t u a l i z a c o e s d e s t a s t r a n s a c o e s sao f e i t a s em v a r i a v e i s l o c a l e a t r a n s a c a o . A a t u a l i z acao do Banco de Dados se f a z quando a t r a n s a c a o passa p e l a f a s e de v a l i d a c a o : i s t o s i g n i f i c a d i z e r que, ap6s a v a l i d a c a o , as v a r i a v e i s l o c a i s sSo c o p i a d a s p a r a os r e s p e c t i v o s o b j e t o s do Banco de Dados.
Neste metodo o t i m i s t a , uma t r a n s a c a o c o n s i s t e de t r e s f a s e s [Kung 8 1 ] :
1. F a s e de L e i t u r a => e a f a s e em que a t r a n s a c a o e e x e c u t a d a p o r i n t e i r o , f a z e n d o as a t u a l i z a c o e s em c 6 p i a s l o c a i s , conforme mencionamos a n t e r i o r m e n t e . P o r t a n t o , nao ha a t u a l i z a c a o no Banco de Dados d u r a n t e e s t a f a s e .
2. F a s e de Validac&o => e a f a s e em que se v e r i f i c a se as c 6 p i a s l o c a i s podem s e r c o p i a d a s p a r a o Banco de Dados sem que h a j a p e r d a de c o n s i s t e n c i a . Caso a t r a n s a c a o s e j a v a l i d a d a ent&o e e x e c u t a d a a f a s e de g r a v a c a o d e s c r i t a a s e g u i r , caso c o n t r a r i o , a t r a n s a c & o e r e p e t i d a .
3. F a s e de Gravacao => Uma vez v a l i d a d a uma t r a n s a c S o d u r a n t e a f a s e de v a l i d a c a o , e n t a o as a t u a l i z a c o e s das c 6 p i a s l o c a i s no Banco de Dados s&o r e a l i z a d a s .
Detalhamos, a s e g u i r , a f a s e de v a l i d a c a o uma v e z que as o u t r a s duas f a s e s s&o p o r s i so a u t o - e x p l i c a t i v a s .
Cada t r a n s a c & o r e c e b e um t i m e s t a m p u n i c o quando a v a l i d a c a o o c o r r e , denotado p o r T S ( T i ) . U t i l i z a m o s um c o n t a d o r
g l o b a l , denotado p o r c t ( c o n t a d o r de t r a n s a c a o ) , p a r a a t r i b u i r m o s os t i m e s t a m p s , sendo que a cada a t r i b u i c S o de um v a l o r , e s t e c o n t a d o r e i n c r e m e n t a d o de uma u n i d a d e .
D u r a n t e a f a s e de l e i t u r a devemos g u a r d a r os c o n j u n t o s de i t e n s l i d o s e g r a v a d o s p e l a t r a n s a c a o que estamos v a l i d a n d o . Assim, cada t r a n s a c a o p o s s u i um ConjRead, que e um c o n j u n t o que
i n d i c a t o d o s os o b j e t o s que f o r a m l i d o s , e um C o n j W r i t e , que i n d i c a os o b j e t o s g r a v a d o s p e l a t r a n s a c S o .
Alem d i s s o , devemos g u a r d a r o v a l o r do c t quando a t r a n s a c a o i n i c i a sua f a s e de l e i t u r a , denotado p o r I n i c i o ( T j ) , como tambem o v a l o r do c t quando a t r a n s a c a o t e r m i n a sua f a s e de l e i t u r a , denotado p o r F i m ( T j ) .
A f i g u r e a b a i x o m o s t r a - n o s como s e r i a a e s t r u t u r a de uma t r a n s a c a o .
Fase de L e i t u r a Fase de V a l i d a c a o Fase de GravacSo
i i t ; i 1 1 1 I n i c i o ( T j ) F i m ( T j ) T S ( T j ) A c o r r e c S o d e s t e metodo b a s e i a - s e no f a t o de que o Schedule p r o d u z i d o d u r a n t e a f a s e de v a l i d a c a o deve s e r e q u i v a l e n t e a um Schedule s e r i a l ordenado p e l o s t i m e s t a m p s T S ( T i ) . A v a l i d a c a o de uma t r a n s a c S o T j e f e i t a com r e l a c & o a t o d a s as o u t r a s t r a n s a c o e s T± j a v a l i d a d a s , i s t o e, T S ( T i ) < T S ( T j ) . Assim, o metodo p r o i b e a formacao de p r e c e d e n c i e s no s e n t i d o T j -> T i , so a d m i t i n d o - a s no s e n t i d o i n v e r s e I s t o g a r a n t e a a u s e n c i a de c i c l o s e n t r e t r a n s a c o e s c o n f i r m a d a s .
Para i s s o , uma das s e g u i n t e s c o n d i c S e s [Kung 8 1 ] deve ser o b e d e c i d a p a r a v a l i d a c a o de uma t r a n s a c a o T j com r e l a c a o a t o d a t r a n s a c a o T± t a l que, TS(T±) < T S ( T j ) :
C I . T± c o m p l e t a sua f a s e de g r a v a c a o a n t e s de T j
comecar sua f a s e de l e i t u r a , ou s e j a , as t r a n s a c S e s sao e x e c u t a d a s s e r i a l m e n t e . Em o u t r a s p a l a v r a s , T S ( T i ) < I n l c i o ( T j ) . Na f i g u r e a s e g u i r , expomos a ocorr£ncia da c o n d i c a o C I . Condicao C I : T S ( T i ) < I n i c i o ( T j ) i i i i i i i i i i i i i i i i T i T j C2. 0 c o n j u n t o de i t e n s g r a v a d o s p o r T i n&o i n t e r s e c c i o n a o c o n j u n t o de dados l i d o s p o r T j e T i c o m p l e t a sua f a s e de g r a v a c a o a n t e s de T j comecar sua f a s e de g r a v a c a o , ou s e j a , I n i c i o ( T j ) < T S ( T i ) < F i m ( T j ) e o ConjWrite(T±) D C o n j R e a d ( T j ) = 0. A f i g u r a a b a i x o m o s t r a a o c o r r e n c i a da c o n d i c a o C2. Condicao C2 : I n i c i o ( T j ) < TS(T±) < F i m ( T j ) e C o n j W r i t e de T i n ConjRead T j = 0 T i i i i • i i i i A condiQ&o C2 e p a r a p r e v e n i r p r e c e d e n c i e s da f o r m a R j
-> Wi. As f a s e s de g r a v a c a o sao e x e c u t a d a s s e r i a l m e n t e , i s t o e, e x e c u t a d a s em e x c l u s a o mutua. I s t o tambem p r e v i n e a o c o r r e n c i a de p r e c e d e n c i e s da f o r m a Wj -> Wi. C3. 0 c o n j u n t o de i t e n s g r a v a d o s p o r T i nSo i n t e r s e c c i o n a o c o n j u n t o de dados l i d o s ou g r a v a d o s p o r T j , e T i c o m p l e t a sua f a s e de l e i t u r a a n t e s de T j c o m p l e t e r sua f a s e de l e i t u r a . Ou s e j a , F i m ( T i ) < F i m ( T j ) e C o n j W r i t e ( T i ) n ( C o n j W r i t e ( T j ) U C o n j R e a d ( T j ) ) = p. A f i g u r e a s e g u i r m o s t r a a c o n d i c a o C3. Condicfio C3 : F i m ( T i ) < F i m ( T j ) e C o n j W r i t e de T i fl ( C o n j W r i t e de T j U ConjRead de T j ) = 0. T i A c o n d i c a o C3 p r e v i n e p r e c e d e n c i e s da f o r m a Rj -> W± e Wj -> Wi, p e r m i t i n d o que h a j a p a r a l e l i s m o e n t r e as f a s e s de g r a v a c a o . Exemplo 2.14 S e j a o s e g u i n t e s c h e d u l e S com as t r a n s a c o e s T i e Tz, onde T S ( T i ) < TS(Tz) : S = R i ( x ) ; R z ( x ) ; p W2( x ) ; R2( y ) ; p W2( y ) ; R i ( y ) ; C i ; C2 onde pW(x) s i g n i f i c a um p r e - w r i t e na c o p i a l o c a l do o b j e t o x. Entfio a f a s e de v a l i d a c & o tern sucesso e o s c h e d u l e S 6