Protocolos Protocolos de de Bloqueio Bloqueio Protocolo Protocolo com base com base em em Timestamps Timestamps Protocolos Protocolos Multi Multi- -verso verso Controle de Controle de Deadlock Deadlock Inser Inser o e Remo o e Remo o de Dados o de Dados Concorrncia em Concorrncia em BDs BDs Distribu Distribu dos dos 124 Controle Controle de de Concorrncia Concorrncia Controle Controle de de concorrncia concorrncia usado usado para para garantir garantir a a consistncia consistncia e o e o isolamento isolamento de de transaes transaes Protocolos Protocolos de de controle controle de de concorrncia concorrncia garantem garantem a a serializao serializao no no processamento processamento de de transaes transaes Protocolos Protocolos de de bloqueio bloqueio: : controlam controlam o o acesso acesso ao ao BD, BD, bloqueando bloqueando os os dados dados que que esto esto sendo sendo usados usados Protocolos Protocolos com base com base em em timestamps timestamps: : associam associam marcas marcas de tempo de tempo s s operaes operaes de de leitura leitura e e escrita escrita Protocolos Protocolos de de validao validao: : efetuam efetuam testes de testes de validao validao dos dados antes dos dados antes das das operaes operaes de de escrita escrita 125 Protocolos Protocolos de de Bloqueio Bloqueio Impedem Impedem que que um dado um dado seja seja modificado modificado enquanto enquanto uma uma transao transao o o estiver estiver acessando acessando Modos Modos de de Bloqueio Bloqueio Compartilhado Compartilhado (S): (S): permite permite somente somente leitura leitura; ; obtido obtido sempre sempre que que no no houver houver nenhum nenhum bloqueio bloqueio exclusivo exclusivo Exclusivo Exclusivo (X): (X): permite permite leitura leitura e e escrita escrita; ; obtido obtido somente somente se se no no houver houver nenhum nenhum outro outro bloqueio bloqueio Todas Todas as as transaes transaes devem devem: : Solicitar Solicitar o o bloqueio bloqueio compartilhado compartilhado ( (para para leitura leitura) ) ou ou exclusivo exclusivo ( (para para escrita escrita) antes de ) antes de acessar acessar um dado um dado Autorizao Autorizao vai vai depender depender dos dos bloqueios bloqueios existentes existentes Liberar Liberar o o bloqueio bloqueio quando quando no no for for mais mais necessrio necessrio 126 Protocolos Protocolos de de Bloqueio Bloqueio Operaes Operaes de de Bloqueio Bloqueio Resultado Resultado das das Operaes Operaes Transaes Transaes em em espera espera ganham ganham direito direito de de acesso acesso quando quando o dado o dado bloqueado bloqueado for for liberado liberado unlock(dado) lock-X(dado) lock-S(dado) Operao Operao Ao Ao Libera o bloqueio existente Solicita bloqueio exclusivo do dado Solicita bloqueio compartilhado do dado Se n=1: Livre Se n1: S; n-- Espera S; n++ Estado Estado: S : S Espera S; n=1 lock-S(dado) Livre Ignora unlock(dado) Espera X lock-X(dado) Estado Estado: X : X Estado Estado: : Livre Livre Operao Operao 127 Protocolos Protocolos de de Bloqueio Bloqueio Exemplo Exemplo: : suponha suponha as as transaes transaes T T 1 1 e T e T 2 2 T T 11 : : Read Read ( (Aplic Aplic); ); Aplic Aplic.Saldo = .Saldo = Aplic Aplic.Saldo .Saldo 5 500; 00; Write Write ( (Aplic Aplic); ); Read Read ( (Conta Conta); ); Conta.Saldo = Conta.Saldo Conta.Saldo = Conta.Saldo + + 5 500; 00; Write Write ( (Conta Conta); ); T T 22 : : Read Read ( (Conta Conta); ); Read Read ( (Aplic Aplic); ); Print ( Print (Conta.Saldo Conta.Saldo + + Aplic Aplic.Saldo .Saldo) ); ; Operaes Operaes de de bloqueio bloqueio devem devem ser ser adicionadas adicionadas ao ao cdigo cdigo para para garantir garantir o o isolamento isolamento entre entre as as transaes transaes 128 Protocolos Protocolos de de Bloqueio Bloqueio Bloqueio Bloqueio s s no no acesso acesso no no garante garante isolamento isolamento: : T T 22 T T 11 Lock-X (Conta); Read (Conta); Conta.Saldo = Conta.Saldo + 500; Write (Conta); Unlock (Conta); Lock-X (Aplic); Read (Aplic); Aplic.Saldo = Aplic.Saldo 500; Write (Aplic); Unlock (Aplic); Lock-S (Aplic); Read (Aplic); Unlock (Aplic); Print (Conta.Saldo + Aplic.Saldo); Lock-S (Conta); Read (Conta); Unlock (Conta); 129 Protocolos Protocolos de de Bloqueio Bloqueio Bloqueio Bloqueio pode pode causar causar inanio inanio ( (starvation starvation) ) T T 22 nunca nunca recebe recebe o o direiro direiro de de acesso acesso! ! Pode Pode ser ser evitado evitado fazendo fazendo que que o o direito direito de de acesso acesso compartilhado compartilhado no no seja seja concedido concedido se se houver houver uma uma transao transao esperando esperando por por bloqueio bloqueio exclusivo exclusivo lock-S(Q) bloqueada lock-S(Q) bloqueada lock-S(Q) bloqueada lock-X(Q) lock-S(Q) T T 55 T T 44 T T 33 T T 22 T T 11 130 Protocolos Protocolos de de Bloqueio Bloqueio Protocolo Protocolo de de Bloqueio Bloqueio em em Duas Duas Fases Fases (2PL) (2PL) Primeira Primeira fase fase: : Fase Fase de de expanso expanso Pode Pode bloquear bloquear dados dados No No pode pode liberar liberar os os bloqueios bloqueios obtidos obtidos Segunda Segunda fase fase: : Fase Fase de de recolhimento recolhimento Pode Pode liberar liberar os os dados dados bloqueados bloqueados anteriormente anteriormente No No pode pode mais mais bloquear bloquear dados dados Garante Garante escala escala de de execuo execuo serializvel serializvel em em conflito conflito Precedncia Precedncia determinada determinada em em funo funo do do instante instante de de obteno obteno do do ltimo ltimo bloqueio bloqueio No No evita evita rollback rollback em em cascata cascata 131 Protocolos Protocolos de de Bloqueio Bloqueio Bloqueio Bloqueio em em Duas Duas Fases Fases Exemplo Exemplo: : Bloqueada Conta.Saldo = Conta.Saldo + 500; Write (Conta); Unlock (Conta); T T 22 T T 11 Lock-X (Aplic); Read (Aplic); Aplic.Saldo = Aplic.Saldo 500; Write (Aplic); Lock-X (Conta); Unlock (Aplic); // Inicia 2 a fase Read (Conta); Read (Conta); Lock-S (Aplic); Unlock (Conta); // Inicia 2 a fase Read (Aplic); Print (Conta.Saldo + Aplic.Saldo); Unlock (Aplic); Lock-S (Conta); 132 Protocolos Protocolos de de Bloqueio Bloqueio Bloqueio Bloqueio em em duas duas fases fases pode pode causar causar deadlock deadlock: : Bloqueada Bloqueada Bloqueada Write (Aplic); Lock-X (Conta); T T 22 T T 11 No executa: Unlock (Aplic); Read (Conta); Conta.Saldo = Conta.Saldo + 500; Write (Conta); Unlock (Conta); Lock-X (Aplic); Read (Aplic); Aplic.Saldo = Aplic.Saldo 500; No executa: Unlock (Conta); Read (Aplic); Print (Conta.Saldo + Aplic.Saldo); Unlock (Aplic); Lock-S (Conta); Read (Conta); Lock-S (Aplic); 133 Protocolos Protocolos de de Bloqueio Bloqueio Bloq Bloq. . em em 2 2 fases fases no no evita evita rollback rollback em em cascata cascata Bloqueada Conta.Saldo = Conta.Saldo + 500; Write (Conta); // ABORTA Unlock(Conta); T T 22 T T 11 Lock-X (Aplic); Read (Aplic); Aplic.Saldo = Aplic.Saldo 500; Write (Aplic); Lock-X (Conta); Unlock (Aplic); Read (Conta); Read (Conta); // ABORTA Unlock (Conta); Print (Conta.Saldo + Aplic.Saldo); Unlock (Aplic); Lock-S (Aplic); Read (Aplic); Lock-S (Conta); 134 Protocolos Protocolos de de Bloqueio Bloqueio Variantes Variantes do do Bloqueio Bloqueio em em Duas Duas Fases Fases Evitam Evitam o o rollback rollback em em cascata cascata Usados Usados pela pela maioria maioria dos dos SGBDs SGBDs Protocolo Protocolo de de Bloqueio Bloqueio em em Duas Duas Fases Fases Severo Severo Obriga Obriga que que os os bloqueios bloqueios exclusivos exclusivos sejam sejam mantidos mantidos at at a a efetivao efetivao da da transao transao Protocolo Protocolo de de Bloqueio Bloqueio em em Duas Duas Fases Fases Rigoroso Rigoroso Obriga Obriga que que todos todos os os bloqueios bloqueios ( (compartilhados compartilhados e e exclusivos exclusivos) ) sejam sejam mantidos mantidos at at o o commit commit 135 Protocolos Protocolos de de Bloqueio Bloqueio Bloqueio Bloqueio em em Duas Duas Fases Fases Severo Severo Exemplo Exemplo: : Bloqueada Conta.Saldo = Conta.Saldo + 500; Write (Conta); Unlock (Aplic); Unlock(Conta); T T 22 T T 11 Lock-X (Aplic); Read (Aplic); Aplic.Saldo = Aplic.Saldo 500; Write (Aplic); Lock-X (Conta); Read (Conta); Read (Aplic); Lock-S (Conta); Unlock (Aplic); Read (Conta); Print (Conta.Saldo + Aplic.Saldo); Unlock (Conta); Lock-S (Aplic); 136 Protocolos Protocolos de de Bloqueio Bloqueio Bloqueio Bloqueio em em Duas Duas Fases Fases Rigoroso Rigoroso Exemplo Exemplo: : Bloqueada Conta.Saldo = Conta.Saldo + 500; Write (Conta); Unlock (Aplic); Unlock(Conta); T T 22 T T 11 Lock-X (Aplic); Read (Aplic); Aplic.Saldo = Aplic.Saldo 500; Write (Aplic); Lock-X (Conta); Read (Conta); Read (Aplic); Lock-S (Conta); Read (Conta); Print (Conta.Saldo + Aplic.Saldo); Unlock (Aplic); Unlock (Conta); Lock-S (Aplic); 137 Protocolos Protocolos de de Bloqueio Bloqueio Protocolos Protocolos com com Converso Converso de de Bloqueios Bloqueios Utilizam Utilizam instrues instrues de de converso converso de de bloqueios bloqueios para para alternar alternar entre entre modos modos de de bloqueio bloqueio diferentes diferentes Upgrade(Q Upgrade(Q): ): bloqueio bloqueio compartilhado compartilhado exclusivo exclusivo Downgrade(Q Downgrade(Q): ): bloqueio bloqueio exclusivo exclusivo compartilhado compartilhado Lock-S Lock-X Downgrade Upgrade 138 Protocolos Protocolos de de Bloqueio Bloqueio Modos de Bloqueio Intencional Modos de Bloqueio Intencional Propiciam maior paralelismo entre transaes Propiciam maior paralelismo entre transaes Inteno de compartilhamento (IS): indica que um Inteno de compartilhamento (IS): indica que um bloqueio compartilhado poder ser solicitado bloqueio compartilhado poder ser solicitado Inteno de exclusividade (IX): indica que um Inteno de exclusividade (IX): indica que um bloqueio exclusivo poder ser solicitado bloqueio exclusivo poder ser solicitado Compartilhado com inteno de exclusividade (SIX): Compartilhado com inteno de exclusividade (SIX): indica que h bloqueio indica que h bloqueio compartilhado ativo, compartilhado ativo, mas que um bloqueio mas que um bloqueio exclusivo pode vir a exclusivo pode vir a ser solicitado ser solicitado false false false false false X X false false false false true SIX SIX false false true false true S S false false false true true IX IX false true true true true IS IS X X SIX SIX S S IX IX IS IS 139 Protocolos Protocolos de de Bloqueio Bloqueio Protocolos Protocolos de de Bloqueio Bloqueio baseados baseados em em Grafos Grafos Determinam Determinam uma uma ordenao ordenao parcial parcial no no acesso acesso aos aos dados dados usando usando um um grafo grafo de de precedncia precedncia Supondo Supondo que que exista exista a a relao relao de de precedncia precedncia A A B B no no grafo grafo, , qualquer qualquer transao transao que que acesse acesse A e B, A e B, deve deve acessar acessar primeiro primeiro A e A e depois depois B B A A ordenao ordenao pode pode ser ser baseada baseada na na organizao organizao fsica fsica ou ou lgica lgica dos dados, dos dados, ou ou pode pode ser ser imposta imposta de de modo modo aleatrio aleatrio somente somente para para controlar controlar a a concorrncia concorrncia Existem Existem vrios vrios protocolos protocolos baseados baseados em em grafos grafos; um ; um dos dos mais mais simples o simples o protocolo protocolo de de grafo grafo em em rvore rvore 140 Protocolos Protocolos de de Bloqueio Bloqueio Protocolo Protocolo de de Grafo Grafo em em rvore rvore Bloqueios Bloqueios so so todos todos exclusivos exclusivos Primeiro Primeiro bloqueio bloqueio pode pode ser ser em em qualquer qualquer dado dado Os Os bloqueios bloqueios seguintes seguintes podem podem ocorrer ocorrer somente somente se o dado se o dado precedente precedente estiver estiver bloqueado bloqueado Dados Dados podem podem ser ser desbloqueados desbloqueados a a qualquer qualquer instante instante Bloqueio Bloqueio mais mais curto curto que que no no protocolo protocolo de 2 de 2 fases fases Garante Garante serializao serializao de de conflito conflito e e evita evita deadlock deadlock Pode Pode bloquear bloquear mais mais dados do dados do que que reamente reamente precisa precisa Escalas Escalas serializveis serializveis por por este este protocolo protocolo podem podem no no o o ser com ser com bloqueio bloqueio em em 2 2 fases fases, e vice , e vice- -versa versa A B C D E F G H 141 Protocolos Protocolos de de Bloqueio Bloqueio Granularidade Granularidade Mltipla Mltipla Ao invs de bloquear um item de dados, podemos Ao invs de bloquear um item de dados, podemos bloquear bloquear tuplas tuplas, tabelas, blocos de disco ou , tabelas, blocos de disco ou BDs BDs Podemos usar rvores para selecionar Podemos usar rvores para selecionar a a granularidade granularidade do bloqueio do bloqueio Cada n da rvore pode ser Cada n da rvore pode ser bloqueado individualmente bloqueado individualmente Cada nvel corresponde Cada nvel corresponde a uma a uma granularidade granularidade de bloqueio de bloqueio BD R 1 R 2 B 1 B n t x+1 t n t 1 t x ... ... ... B 1 t 1 t n ... 142 Protocolos Protocolos com base com base em em Timestamps Timestamps Usam Usam timestamps timestamps (marcas de tempo) (marcas de tempo) associados s transaes e aos dados para associados s transaes e aos dados para ordenar as operaes de leitura e escrita ordenar as operaes de leitura e escrita Cada Cada transao transao T T ganha ganha um um timestamp timestamp TS TS ao ao iniciar iniciar, , com base no com base no relgio relgio do do sistema sistema ou ou em em um um contador contador Dois Dois timestamps timestamps so so associados associados a a cada cada dado dado W W- -TS: TS: indica indica a a transao transao de de maior maior timestamp timestamp que que alterou alterou o valor do dado o valor do dado R R- -TS: TS: indica indica a a transao transao e e maior maior timestamp timestamp que que leu leu o valor do dado o valor do dado 143 Protocolos Protocolos com base com base em em Timestamps Timestamps Ordenao Ordenao de de operaes operaes por por timestamps timestamps No No caso caso da da transao transao T T querer querer ler ler um dado Q um dado Q Se TS(T) < W Se TS(T) < W- -TS(Q): TS(Q): T T abortada abortada e e desfeita desfeita (T (T quer quer ler ler um dado um dado que que j j foi foi sobrescrito sobrescrito) ) Se TS(T) Se TS(T) W W- -TS(Q): a TS(Q): a operao operao executada executada; ; se R se R- -TS(Q) < TS(T), TS(Q) < TS(T), ento ento R R- -TS(Q) = TS(T) TS(Q) = TS(T) No No caso caso da da transao transao T T querer querer alterar alterar um dado Q um dado Q Se TS(T) < R Se TS(T) < R- -TS(Q): TS(Q): T T abortada abortada e e desfeita desfeita (T (T no no pode pode alterar alterar um valor um valor que que j j foi foi lido) lido) Se TS(T) Se TS(T) < < W W- -TS(Q): TS(Q): T T abortada abortada e e desfeita desfeita (T (T est est tentando tentando escrever escrever um valor um valor obsoleto obsoleto) ) Seno Seno, a , a operao operao executada executada; W ; W- -TS(Q) = TS(T) TS(Q) = TS(T) 144 Protocolos Protocolos com base com base em em Timestamps Timestamps Exemplo Exemplo de de escala escala ordenada ordenada por por timestamps timestamps Read (Conta); Read (Aplic); Print (Conta.Saldo + Aplic.Saldo); T T 22 R-TS(Conta) = 2 TS(T 1 ) < R-TS(Conta) T 1 e T 2 abortadas Read (Conta); Conta.Saldo += 500; Write (Conta); Timestamps Timestamps T T 11 Read (Aplic); Aplic.Saldo = 500 Write (Aplic); TS(T 2 ) = 2 R-TS(Conta) = 2 R-TS(Aplic) = 2 TS(T 1 ) = 1 R-TS(Aplic) = 1 W-TS(Aplic) = 1 145 Protocolos Protocolos com base com base em em Timestamps Timestamps Caractersticas Caractersticas da da ordenao ordenao por por timestamps timestamps Evita Evita deadlocks deadlocks e e garante garante a a serializao serializao de de conflito conflito na na ordem ordem dos dos timestamps timestamps No No impede a impede a cascata cascata nem nem garante garante a a recuperao recuperao Regra de Escrita de Thomas Regra de Escrita de Thomas Se a transao T tentar alterar um dado Q, e Se a transao T tentar alterar um dado Q, e TS(T) TS(T) for for menor menor que que W W- -TS(Q), n TS(Q), no o preciso abortar a preciso abortar a transao; basta ignorar a operao de escrita transao; basta ignorar a operao de escrita Garante a Garante a serializao serializao de viso de viso Aumenta a concorrncia entre transaes Aumenta a concorrncia entre transaes 146 Protocolos Protocolos Multi Multi- -Verso Verso Permitem que um dado tenha vrios valores Permitem que um dado tenha vrios valores Operaes de escrita criam novas verses do dado Operaes de escrita criam novas verses do dado Quando feita a leitura, o SGBD escolhe a verso do Quando feita a leitura, o SGBD escolhe a verso do dado que ser lida de modo a garantir a dado que ser lida de modo a garantir a serializao serializao Operaes de leitura no precisam aguardar, pois Operaes de leitura no precisam aguardar, pois sempre h uma verso do dado pronta para ser lida sempre h uma verso do dado pronta para ser lida Protocolo determina como as verses so usadas Protocolo determina como as verses so usadas Protocolos com base em mltiplas verses Protocolos com base em mltiplas verses Multi Multi- -verso verso com ordenao por com ordenao por timestamps timestamps Multi Multi- -verso verso com bloqueio em duas fases com bloqueio em duas fases Garantem a criao de escalas Garantem a criao de escalas serializveis serializveis 147 Protocolos Protocolos Multi Multi- -Verso Verso Multi Multi- -verso verso com Ordenao por com Ordenao por Timestamps Timestamps Cada verso do dado possui Cada verso do dado possui timestamps timestamps de leitura de leitura (R (R- -TS) e escrita (W TS) e escrita (W- -TS), alm do valor do dado TS), alm do valor do dado Uma transao T sempre acessa a verso Uma transao T sempre acessa a verso Q Q kk do dado do dado com o maior W com o maior W- -TS que seja menor ou igual a TS(T) TS que seja menor ou igual a TS(T) A transao T sempre l a verso A transao T sempre l a verso Q Q kk Ao escrever, T desfeita se TS(T) < R Ao escrever, T desfeita se TS(T) < R- -TS( TS(Q Q kk ); ); seno, se TS(T) = W seno, se TS(T) = W- -TS( TS(Q Q kk ), o valor de ), o valor de Q Q kk alterado; alterado; caso contrrio, uma nova verso de Q criada caso contrrio, uma nova verso de Q criada Verses antigas, com W Verses antigas, com W- -TS( TS(Q Q kk ) < TS(T), sendo T a ) < TS(T), sendo T a ltima transao executada, podem ser removidas ltima transao executada, podem ser removidas 148 Protocolos Protocolos Multi Multi- -Verso Verso Exemplo Exemplo de de escala escala multi multi- -verso verso com com timestamps timestamps Read (Conta); Read (Aplic); Print (Conta.Saldo + Aplic.Saldo); T T 22 R-TS(Conta 1 ) = 2 R-TS(Conta 1 ) > TS(T 1 ) T 1 e T 2 abortadas Read (Conta); Conta.Saldo += 500; Write (Conta); Timestamps Timestamps T T 11 Read (Aplic); Aplic.Saldo = 500 Write (Aplic); TS(T 2 ) = 2 R-TS(Conta 1 ) = 2 R-TS(Aplic 2 ) = 2 TS(T 1 ) = 1 R-TS(Aplic 1 ) = 1 W-TS(Aplic 2 ) = 1 149 Protocolos Protocolos Multi Multi- -Verso Verso Multi Multi- -verso verso com Bloqueio em Duas Fases com Bloqueio em Duas Fases Usa Usa timestamps timestamps e contador de e contador de commits commits ( (ts ts- -counter counter) ) Distingue transaes de atualizao e somente Distingue transaes de atualizao e somente- -leitura leitura Transao de atualizao ( Transao de atualizao (update update) ) Faz o bloqueio em duas fases Faz o bloqueio em duas fases C Cada ada write write cria cria uma uma nova nova verso verso Q Q kk do dado com do dado com TS(Q TS(Q kk ) = ) = ts ts- -counter counter quando quando faz faz o o commit commit Transao Transao somente somente- -leitura leitura ( (read read- -only only) ) No precisa manter bloqueios at o final No precisa manter bloqueios at o final TS(T) = TS(T) = ts ts- -counter counter no momento que ela se inicia no momento que ela se inicia L a verso do dado com o maior TS( L a verso do dado com o maior TS(Q Q kk ) ) TS(T) TS(T) 150 Protocolos Protocolos Multi Multi- -Verso Verso Exemplo Exemplo de multi de multi- -verso verso c/ c/ bloqueio bloqueio em em 2 2 fases fases Lock-S (Aplic); Read (Aplic); Print (Conta+Aplic); Unlock (Aplic); Lock-S (Conta); Read (Conta); Unlock (Conta); T T 22 L Aplic 1 = 1000 L Conta 1 = 1000 Cria Conta 2 = 1500 TS(Conta 2 ) = TS(Aplic 2 ) = ts-counter = 2 Lock-X (Conta); Read (Conta); Conta.Saldo += 500; Write (Conta); Unlock (Conta); Unlock (Aplic); Timestamps Timestamps T T 11 Lock-X (Aplic); Read (Aplic); Aplic.Saldo = 500 Write (Aplic); TS(T 2 ) = ts-counter = 1 L Conta 1 = 1000 TS(T 1 ) = ts-counter = 1 L Aplic 1 = 1000 Cria Aplic 2 = 500 151 Controle de Controle de Deadlock Deadlock Deadlock Deadlock ocorre quando temos um conjunto de ocorre quando temos um conjunto de transaes no qual todas esto em espera, uma transaes no qual todas esto em espera, uma aguardando o trmino da outra para prosseguir aguardando o trmino da outra para prosseguir Bloqueada Bloqueada Deadlock! Bloqueada Write (A); Lock-X (B); T T 22 T T 11 Lock-X (A); Read (A); Lock-S (B); Read (B); Lock-S (A); 152 Controle de Controle de Deadlock Deadlock Tcnicas para Controle de Tcnicas para Controle de Deadlock Deadlock Preveno de Preveno de deadlock deadlock Evita os Evita os deadlocks deadlocks antes que estes ocorram antes que estes ocorram Prefervel se a probabilidade de ocorrerem Prefervel se a probabilidade de ocorrerem deadlocks deadlocks for muito alta for muito alta Deteco e recuperao de Deteco e recuperao de deadlock deadlock No evita os No evita os deadlocks deadlocks, mas os detecta e impede , mas os detecta e impede o bloqueio indefinido das transaes envolvidas o bloqueio indefinido das transaes envolvidas Mais eficiente se ocorrerem poucos Mais eficiente se ocorrerem poucos deadlocks deadlocks Rollback Rollback pode ser necessrio independentemente da pode ser necessrio independentemente da tcnica utilizada tcnica utilizada 153 Controle de Controle de Deadlock Deadlock Preveno de Preveno de Deadlock Deadlock Usurio deve sempre acessar dados na mesma ordem Usurio deve sempre acessar dados na mesma ordem Estratgias de preveno usadas por Estratgias de preveno usadas por SGBDs SGBDs Esperar Esperar- -morrer: T morrer: T ii s espera um dado mantido por s espera um dado mantido por T T jj se esta for mais nova; caso contrrio T se esta for mais nova; caso contrrio T ii aborta aborta Ferir Ferir- -esperar: T esperar: T ii somente espera um dado mantido somente espera um dado mantido por T por T jj se esta for mais antiga; caso contrrio ela se esta for mais antiga; caso contrrio ela obriga T obriga T jj a abortar e liberar o dado (T a abortar e liberar o dado (T ii fere T fere T jj ) ) Timeout Timeout: pedido de bloqueio possui um tempo : pedido de bloqueio possui um tempo mximo de espera; se o dado no for liberado mximo de espera; se o dado no for liberado neste tempo, a transao abortada e reiniciada neste tempo, a transao abortada e reiniciada 154 Controle de Controle de Deadlock Deadlock Deteco de Deteco de Deadlock Deadlock Algoritmo verifica estado do sistema periodicamente Algoritmo verifica estado do sistema periodicamente para determinar se transaes esto em para determinar se transaes esto em deadlock deadlock O sistema precisa manter informaes sobre a O sistema precisa manter informaes sobre a alocao dos dados e as solicitaes pendentes alocao dos dados e as solicitaes pendentes Deadlocks Deadlocks podem ser detectados usando grafos de podem ser detectados usando grafos de espera, nos quais um ciclo indica um espera, nos quais um ciclo indica um deadlock deadlock Grafo sem ciclo Grafo sem ciclo Grafo com ciclo Grafo com ciclo T 4 T 5 T 6 T 1 T 2 T 3 155 Controle de Controle de Deadlock Deadlock Recuperao de Recuperao de Deadlock Deadlock Aps detectar o Aps detectar o deadlock deadlock, precisamos abortar uma , precisamos abortar uma transao para quebrar o ciclo de espera transao para quebrar o ciclo de espera Devemos escolher a transao em funo do custo Devemos escolher a transao em funo do custo do do rollback rollback, determinado em funo do: , determinado em funo do: Tempo que a transao est em processamento Tempo que a transao est em processamento Tempo necessrio para concluso da transao Tempo necessrio para concluso da transao Nmero de acessos a dados j efetuados Nmero de acessos a dados j efetuados Nmero de acessos a dados que faltam p/ concluir Nmero de acessos a dados que faltam p/ concluir Nmero de transaes a recuperar em cascata Nmero de transaes a recuperar em cascata Nmero de abortos sofridos (para evitar inanio) Nmero de abortos sofridos (para evitar inanio) etc. etc. 156 Insero e Remoo de Dados Insero e Remoo de Dados Operaes de insero e remoo devem ser Operaes de insero e remoo devem ser consideradas no controle de concorrncia, pois consideradas no controle de concorrncia, pois so conflitantes com qualquer outra operao so conflitantes com qualquer outra operao Protocolo de Bloqueio em Duas Fases Protocolo de Bloqueio em Duas Fases Devemos bloquear o dado em modo exclusivo para Devemos bloquear o dado em modo exclusivo para inserir ou remover inserir ou remover Protocolo com base em Protocolo com base em Timestamps Timestamps Devemos Devemos inicializar inicializar W W- -TS(Q) e R TS(Q) e R- -TS(Q) com o TS(Q) com o timestamp timestamp da transao que insere o dado Q da transao que insere o dado Q Devemos fazer o teste para operaes que alteram o Devemos fazer o teste para operaes que alteram o valor do dado no momento da remoo valor do dado no momento da remoo 157 Insero e Remoo de Dados Insero e Remoo de Dados Tuplas Tuplas Fantasma Fantasma As transaes abaixo no so conflitantes se fizermos As transaes abaixo no so conflitantes se fizermos controle de concorrncia por controle de concorrncia por tupla tupla, mas entram em , mas entram em conflito se forem executadas concorrentemente conflito se forem executadas concorrentemente select select sum sum(saldo) (saldo) insert insert into into contas contas from from contas contas values values(123,Joo,50.00) (123,Joo,50.00) Solues possveis Solues possveis Bloquear toda a relao Bloquear toda a relao pouca concorrncia pouca concorrncia Bloquear um campo especial que indica que uma Bloquear um campo especial que indica que uma transao est inserindo ou removendo dados transao est inserindo ou removendo dados Bloquear o ndice da relao Bloquear o ndice da relao 158 Concorrncia em Concorrncia em BDs BDs Distribudos Distribudos Controle de concorrncia essencial em Controle de concorrncia essencial em BDDs BDDs preciso garantir a consistncia e o isolamento, preciso garantir a consistncia e o isolamento, apesar da fragmentao e da replicao dos dados apesar da fragmentao e da replicao dos dados Devemos evitar Devemos evitar deadlocks deadlocks distribudos, que so ainda distribudos, que so ainda mais difceis de detectar e recuperar mais difceis de detectar e recuperar Os protocolos de controle de concorrncia so Os protocolos de controle de concorrncia so modificados para trabalhar em modificados para trabalhar em BDs BDs distribudos distribudos Bloqueio nico (Centralizado) Bloqueio nico (Centralizado) Um Um site site funciona como gerenciador de funciona como gerenciador de locks locks, que , que administra todos os pedidos de bloqueio de dados administra todos os pedidos de bloqueio de dados simples, mas sujeito a falhas, e pouco simples, mas sujeito a falhas, e pouco escalvel escalvel 159 Concorrncia em Concorrncia em BDs BDs Distribudos Distribudos Bloqueio Mltiplo (Distribudo) Bloqueio Mltiplo (Distribudo) H gerenciadores de bloqueio em diferentes H gerenciadores de bloqueio em diferentes sites sites Cada gerenciador administra os bloqueios de um Cada gerenciador administra os bloqueios de um conjunto de dados conjunto de dados Evita o gargalo do protocolo centralizado Evita o gargalo do protocolo centralizado Impede o acesso ao dado se o gerenciador falhar Impede o acesso ao dado se o gerenciador falhar Bloqueio com Cpia Primria Bloqueio com Cpia Primria Cada dado possui uma cpia primria em um Cada dado possui uma cpia primria em um site site O bloqueio solicitado ao O bloqueio solicitado ao site site com a cpia primria com a cpia primria daquele dado, que administra todos os bloqueios daquele dado, que administra todos os bloqueios to simples e to simples e escalvel escalvel quanto o protocolo anterior quanto o protocolo anterior Impede o acesso s rplicas se o primrio falhar Impede o acesso s rplicas se o primrio falhar 160 Concorrncia em Concorrncia em BDs BDs Distribudos Distribudos Bloqueio pela Maioria Bloqueio pela Maioria Cada Cada site site possui um gerenciador que administra o possui um gerenciador que administra o bloqueio dos dados locais bloqueio dos dados locais O bloqueio de dados com rplicas concedido se a O bloqueio de dados com rplicas concedido se a maioria dos maioria dos sites sites permitir permitir Mais complexo para implementar que os anteriores Mais complexo para implementar que os anteriores Bloqueio Parcial Bloqueio Parcial Assim como no bloqueio por maioria, cada Assim como no bloqueio por maioria, cada site site possui possui um gerenciador de bloqueio dos dados locais um gerenciador de bloqueio dos dados locais Bloqueios compartilhados so obtidos Bloqueios compartilhados so obtidos contactando contactando o o gerenciador de somente uma rplica do dado gerenciador de somente uma rplica do dado Bloqueios exclusivos devem ser solicitados em todos Bloqueios exclusivos devem ser solicitados em todos os gerenciadores de bloqueio de todas as rplicas os gerenciadores de bloqueio de todas as rplicas 161 Concorrncia em Concorrncia em BDs BDs Distribudos Distribudos Timestamp Timestamp nico (Centralizado) nico (Centralizado) Um nico Um nico site site define as marcas de tempo usando um define as marcas de tempo usando um contador lgico ou o seu relgio local contador lgico ou o seu relgio local Sofre de problemas de confiabilidade e Sofre de problemas de confiabilidade e escalabilidade escalabilidade Timestamp Timestamp Global (Distribudo) Global (Distribudo) Usa o princpio de relgios lgicos ( Usa o princpio de relgios lgicos (Lamport Lamport, 1978) , 1978) Um Um timestamp timestamp formado por uma leitura do relgio formado por uma leitura do relgio concatenada com o identificador do concatenada com o identificador do site site que o gerou que o gerou Sites Sites atualizam os relgios com base nos atualizam os relgios com base nos timestamps timestamps de de sub sub- -transes transes que recebem para executar que recebem para executar Mais robusto e Mais robusto e escalvel escalvel que o esquema centralizado que o esquema centralizado 162 Concorrncia em Concorrncia em BDs BDs Distribudos Distribudos Deadlocks Deadlocks e Replicao e Replicao preciso evitar preciso evitar deadlocks deadlocks ao acessar rplicas ao acessar rplicas Se duas transaes forem acessar um dado duplicado Se duas transaes forem acessar um dado duplicado e cada uma delas bloquear uma rplica do dado, e cada uma delas bloquear uma rplica do dado, nenhuma das duas conseguir prosseguir nenhuma das duas conseguir prosseguir Soluo: obrigar que as transaes bloqueiem as Soluo: obrigar que as transaes bloqueiem as rplicas na mesma ordem rplicas na mesma ordem Deadlocks Deadlocks e Fragmentao e Fragmentao Situao semelhante anterior pode ocorrer quando Situao semelhante anterior pode ocorrer quando duas transaes bloqueiam fragmentos de dados duas transaes bloqueiam fragmentos de dados Soluo: bloquear fragmentos seguindo uma ordem Soluo: bloquear fragmentos seguindo uma ordem 163 Concorrncia em Concorrncia em BDs BDs Distribudos Distribudos Deteco de Deteco de Deadlock Deadlock O algoritmo de deteco de O algoritmo de deteco de deadlock deadlock visto visto anteriormente pode ser usado em anteriormente pode ser usado em BDs BDs distribudos se distribudos se usarmos o protocolo de bloqueio centralizado usarmos o protocolo de bloqueio centralizado Para os demais protocolos, precisamos modificar o Para os demais protocolos, precisamos modificar o algoritmo de deteco de algoritmo de deteco de deadlock deadlock Para montar o grafo, um gerente central precisa Para montar o grafo, um gerente central precisa obter informaes sobre os obter informaes sobre os locks locks mantidos por mantidos por todos os gerenciadores de bloqueio todos os gerenciadores de bloqueio Podem aparecer ciclos falsos no grafo devido ao Podem aparecer ciclos falsos no grafo devido ao atraso na comunicao atraso na comunicao abortos desnecess abortos desnecess rios rios Outra opo fazer a deteco de modo distribudo Outra opo fazer a deteco de modo distribudo 164 Concorrncia em Concorrncia em BDs BDs Distribudos Distribudos Deteco de Deteco de Deadlock Deadlock (cont.) (cont.) Na deteco distribuda, cada Na deteco distribuda, cada site site monta um grafo de monta um grafo de espera com os bloqueios mantidos localmente espera com os bloqueios mantidos localmente Um n T Um n T EX EX adicionado ao grafo para representar as adicionado ao grafo para representar as esperas externas (dados esperas externas (dados bloqueados por outros bloqueados por outros sites sites) ) Um ciclo envolvendo apenas Um ciclo envolvendo apenas ns locais indica ns locais indica deadlock deadlock Um ciclo passando por T Um ciclo passando por T EX EX indica um indica um possvel possvel deadlock deadlock Temos que confirmar a possibilidade de Temos que confirmar a possibilidade de deadlock deadlock contactando contactando os gerenciadores dos os gerenciadores dos sites sites envolvidos envolvidos T EX T X T Y T Z