Controle de concorrencia- Base de dados

7
123 Controle Controle de de Concorrência Concorrência §Protocolos Protocolos de de Bloqueio Bloqueio §Protocolo Protocolo com base com base em em Timestamps Timestamps §Protocolos Protocolos Multi Multi-versão versão §Controle de Controle de Deadlock Deadlock §Inser Inserção e Remo ão e Remoção de Dados ão de Dados §Concorrência em Concorrência em BDs BDs Distribu Distribuí dos dos 124 Controle Controle de de Concorrência Concorrência § Controle Controle de de concorrência concorrência é é usado usado para para garantir garantir a a consistência consistência e o e o isolamento isolamento de de transações transações § Protocolos Protocolos de de controle controle de de concorrência concorrência garantem garantem a a serialização serialização no no processamento processamento de de transações transações § Protocolos Protocolos de de bloqueio bloqueio: : controlam controlam o o acesso acesso ao ao BD, BD, bloqueando bloqueando os os dados dados que que estão estão sendo sendo usados usados § Protocolos Protocolos com base com base em em timestamps timestamps: : associam associam marcas marcas de tempo de tempo às às operações operações de de leitura leitura e e escrita escrita § Protocolos Protocolos de de validação validação: : efetuam efetuam testes de testes de validação validação dos dados antes dos dados antes das das operações operações 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 transação transação 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 não não 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 não não houver houver nenhum nenhum outro outro bloqueio bloqueio § Todas Todas as as transações transações 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 § Autorização Autorização vai vai depender depender dos dos bloqueios bloqueios existentes existentes § Liberar Liberar o o bloqueio bloqueio quando quando não não for for mais mais necessário necessário 126 Protocolos Protocolos de de Bloqueio Bloqueio § Operações Operações de de Bloqueio Bloqueio § Resultado Resultado das das Operações Operações § Transações Transações 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) Operação Operação Ação Ação 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 Operação Operação 127 Protocolos Protocolos de de Bloqueio Bloqueio § Exemplo Exemplo: : suponha suponha as as transações transações T 1 e T e T 2 § T 1 : Read Read (Aplic Aplic); ); Aplic Aplic.Saldo = .Saldo = Aplic Aplic.Saldo .Saldo – 500; 00; Write Write (Aplic Aplic); ); Read Read (Conta Conta); ); Conta.Saldo = Conta.Saldo Conta.Saldo = Conta.Saldo + 500; 00; Write Write (Conta Conta); ); § T 2 : Read Read (Conta Conta); ); Read Read (Aplic Aplic); ); Print ( Print (Conta.Saldo Conta.Saldo + + Aplic Aplic.Saldo .Saldo); § Operações Operações de de bloqueio bloqueio devem devem ser ser adicionadas adicionadas ao ao código código para para garantir garantir o o isolamento isolamento entre entre as as transações transações 128 Protocolos Protocolos de de Bloqueio Bloqueio § Bloqueio Bloqueio no no acesso acesso não não garante garante isolamento isolamento: T 2 T 1 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);

Transcript of Controle de concorrencia- Base de dados

  • 123

    ControleControle de de ConcorrnciaConcorrncia

    ProtocolosProtocolos dede BloqueioBloqueioProtocoloProtocolo com base com base emem TimestampsTimestampsProtocolosProtocolos MultiMulti--versoversoControle de Controle de DeadlockDeadlockInserInsero e Remoo e Remoo de Dadoso de DadosConcorrncia em Concorrncia em BDsBDs DistribuDistribudosdos

    124

    ControleControle de de ConcorrnciaConcorrncia ControleControle de de concorrnciaconcorrncia usadousado parapara garantirgarantir a a

    consistnciaconsistncia e o e o isolamentoisolamento de de transaestransaes ProtocolosProtocolos de de controlecontrole de de concorrnciaconcorrncia garantemgarantem

    a a serializaoserializao no no processamentoprocessamento de de transaestransaes ProtocolosProtocolos de de bloqueiobloqueio: : controlamcontrolam o o acessoacesso aoao BD, BD,

    bloqueandobloqueando osos dados dados queque estoesto sendosendo usadosusados ProtocolosProtocolos com base com base emem timestampstimestamps: : associamassociam

    marcasmarcas de tempo de tempo ss operaesoperaes de de leituraleitura e e escritaescrita ProtocolosProtocolos de de validaovalidao: : efetuamefetuam testes de testes de validaovalidao

    dos dados antes dos dados antes dasdas operaesoperaes de de escritaescrita

    125

    ProtocolosProtocolos de de BloqueioBloqueio ImpedemImpedem queque um dado um dado sejaseja modificadomodificado

    enquantoenquanto umauma transaotransao o o estiverestiver acessandoacessando ModosModos de de BloqueioBloqueio CompartilhadoCompartilhado (S): (S): permitepermite somentesomente leituraleitura; ; obtidoobtido

    sempresempre queque nono houverhouver nenhumnenhum bloqueiobloqueio exclusivoexclusivo ExclusivoExclusivo (X): (X): permitepermite leituraleitura e e escritaescrita; ; obtidoobtido

    somentesomente se se nono houverhouver nenhumnenhum outrooutro bloqueiobloqueio

    TodasTodas as as transaestransaes devemdevem:: SolicitarSolicitar o o bloqueiobloqueio compartilhadocompartilhado ((parapara leituraleitura) ) ouou

    exclusivoexclusivo ((parapara escritaescrita) antes de ) antes de acessaracessar um dadoum dado AutorizaoAutorizao vaivai dependerdepender dos dos bloqueiosbloqueios existentesexistentes

    LiberarLiberar o o bloqueiobloqueio quandoquando nono for for maismais necessrionecessrio126

    ProtocolosProtocolos de de BloqueioBloqueio OperaesOperaes de de BloqueioBloqueio

    ResultadoResultado dasdas OperaesOperaes

    TransaesTransaes emem esperaespera ganhamganham direitodireito de de acessoacessoquandoquando o dado o dado bloqueadobloqueado for for liberadoliberado

    unlock(dado)lock-X(dado)lock-S(dado)

    OperaoOperao AoAo

    Libera o bloqueio existenteSolicita bloqueio exclusivo do dadoSolicita bloqueio compartilhado do dado

    Se n=1: LivreSe n1: S; n--

    EsperaS; n++

    EstadoEstado: S: SEsperaS; n=1lock-S(dado)

    LivreIgnoraunlock(dado)EsperaXlock-X(dado)

    EstadoEstado: X: XEstadoEstado: : LivreLivreOperaoOperao

    127

    ProtocolosProtocolos de de BloqueioBloqueio ExemploExemplo: : suponhasuponha as as transaestransaes TT11 e Te T22 TT11:: ReadRead ((AplicAplic););

    AplicAplic.Saldo = .Saldo = AplicAplic.Saldo .Saldo 5500;00;WriteWrite ((AplicAplic););ReadRead ((ContaConta););Conta.Saldo = Conta.Saldo Conta.Saldo = Conta.Saldo ++ 5500;00;WriteWrite ((ContaConta););

    TT22:: ReadRead ((ContaConta););ReadRead ((AplicAplic););Print (Print (Conta.SaldoConta.Saldo + + AplicAplic.Saldo.Saldo));;

    OperaesOperaes de de bloqueiobloqueio devemdevem ser ser adicionadasadicionadas aoaocdigocdigo parapara garantirgarantir o o isolamentoisolamento entreentre as as transaestransaes

    128

    ProtocolosProtocolos de de BloqueioBloqueio BloqueioBloqueio ss no no acessoacesso nono garantegarante isolamentoisolamento::

    TT22TT11

    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

    ProtocolosProtocolos de de BloqueioBloqueio BloqueioBloqueio podepode causarcausar inanioinanio ((starvationstarvation))

    TT22 nuncanunca receberecebe o o direirodireiro de de acessoacesso!! PodePode ser ser evitadoevitado fazendofazendo queque o o direitodireito de de acessoacesso

    compartilhadocompartilhado nono sejaseja concedidoconcedido se se houverhouver umaumatransaotransao esperandoesperando porpor bloqueiobloqueio exclusivoexclusivo

    lock-S(Q)bloqueadalock-S(Q)bloqueada

    lock-S(Q)bloqueadalock-X(Q)

    lock-S(Q)TT55TT44TT33TT22TT11

    130

    ProtocolosProtocolos de de BloqueioBloqueio ProtocoloProtocolo de de BloqueioBloqueio emem DuasDuas FasesFases (2PL)(2PL) PrimeiraPrimeira fasefase: : FaseFase de de expansoexpanso PodePode bloquearbloquear dadosdados NoNo podepode liberarliberar osos bloqueiosbloqueios obtidosobtidos

    SegundaSegunda fasefase: : FaseFase de de recolhimentorecolhimento PodePode liberarliberar osos dados dados bloqueadosbloqueados anteriormenteanteriormente NoNo podepode maismais bloquearbloquear dadosdados

    GaranteGarante escalaescala de de execuoexecuo serializvelserializvel emem conflitoconflito PrecednciaPrecedncia determinadadeterminada emem funofuno do do instanteinstante de de

    obtenoobteno do do ltimoltimo bloqueiobloqueio NoNo evitaevita rollbackrollback emem cascatacascata

    131

    ProtocolosProtocolos de de BloqueioBloqueio BloqueioBloqueio emem DuasDuas FasesFases ExemploExemplo::

    BloqueadaConta.Saldo = Conta.Saldo + 500; Write (Conta);Unlock (Conta);

    TT22TT11Lock-X (Aplic);Read (Aplic);Aplic.Saldo = Aplic.Saldo 500;Write (Aplic); Lock-X (Conta);Unlock (Aplic); // Inicia 2a faseRead (Conta);

    Read (Conta);Lock-S (Aplic);Unlock (Conta); // Inicia 2a faseRead (Aplic); Print (Conta.Saldo + Aplic.Saldo);Unlock (Aplic);

    Lock-S (Conta);

    132

    ProtocolosProtocolos de de BloqueioBloqueio BloqueioBloqueio emem duasduas fasesfases podepode causarcausar deadlockdeadlock::

    BloqueadaBloqueada

    BloqueadaWrite (Aplic);Lock-X (Conta);

    TT22TT11

    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

    ProtocolosProtocolos de de BloqueioBloqueio BloqBloq. . emem 2 2 fasesfases nono evitaevita rollbackrollback emem cascatacascata

    BloqueadaConta.Saldo = Conta.Saldo + 500; Write (Conta); // ABORTAUnlock(Conta);

    TT22TT11Lock-X (Aplic);Read (Aplic);Aplic.Saldo = Aplic.Saldo 500;Write (Aplic); Lock-X (Conta);Unlock (Aplic);Read (Conta);

    Read (Conta); // ABORTAUnlock (Conta);Print (Conta.Saldo + Aplic.Saldo);Unlock (Aplic);

    Lock-S (Aplic); Read (Aplic); Lock-S (Conta);

    134

    ProtocolosProtocolos de de BloqueioBloqueio VariantesVariantes do do BloqueioBloqueio emem DuasDuas FasesFases EvitamEvitam o o rollbackrollback emem cascatacascata UsadosUsados pelapela maioriamaioria dos dos SGBDsSGBDs ProtocoloProtocolo de de BloqueioBloqueio emem DuasDuas FasesFases SeveroSevero ObrigaObriga queque osos bloqueiosbloqueios exclusivosexclusivos sejamsejam

    mantidosmantidos atat a a efetivaoefetivao dada transaotransao ProtocoloProtocolo de de BloqueioBloqueio emem DuasDuas FasesFases RigorosoRigoroso ObrigaObriga queque todostodos osos bloqueiosbloqueios ((compartilhadoscompartilhados e e

    exclusivosexclusivos) ) sejamsejam mantidosmantidos atat o o commitcommit

  • 135

    ProtocolosProtocolos de de BloqueioBloqueio BloqueioBloqueio emem DuasDuas FasesFases SeveroSevero ExemploExemplo::

    BloqueadaConta.Saldo = Conta.Saldo + 500; Write (Conta); Unlock (Aplic);Unlock(Conta);

    TT22TT11Lock-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

    ProtocolosProtocolos de de BloqueioBloqueio BloqueioBloqueio emem DuasDuas FasesFases RigorosoRigoroso ExemploExemplo::

    BloqueadaConta.Saldo = Conta.Saldo + 500; Write (Conta); Unlock (Aplic);Unlock(Conta);

    TT22TT11Lock-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

    ProtocolosProtocolos de de BloqueioBloqueio ProtocolosProtocolos com com ConversoConverso de de BloqueiosBloqueios UtilizamUtilizam instruesinstrues de de conversoconverso de de bloqueiosbloqueios parapara

    alternaralternar entreentre modosmodos de de bloqueiobloqueio diferentesdiferentes Upgrade(QUpgrade(Q): ): bloqueiobloqueio compartilhadocompartilhado exclusivoexclusivo Downgrade(QDowngrade(Q): ): bloqueiobloqueio exclusivoexclusivo compartilhadocompartilhado

    Lock-S Lock-X

    Downgrade

    Upgrade

    138

    ProtocolosProtocolos de de BloqueioBloqueio Modos de Bloqueio IntencionalModos de Bloqueio Intencional Propiciam maior paralelismo entre transaesPropiciam maior paralelismo entre transaes Inteno de compartilhamento (IS): indica que um Inteno de compartilhamento (IS): indica que um

    bloqueio compartilhado poder ser solicitadobloqueio compartilhado poder ser solicitado Inteno de exclusividade (IX): indica que um Inteno de exclusividade (IX): indica que um

    bloqueio exclusivo poder ser solicitadobloqueio 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 solicitadoser solicitado falsefalsefalsefalsefalseXX

    falsefalsefalsefalsetrueSIXSIXfalsefalsetruefalsetrueSSfalsefalsefalsetruetrueIXIXfalsetruetruetruetrueISIS

    XXSIXSIXSSIXIXISIS

    139

    ProtocolosProtocolos de de BloqueioBloqueio ProtocolosProtocolos de de BloqueioBloqueio baseadosbaseados emem GrafosGrafos DeterminamDeterminam umauma ordenaoordenao parcialparcial no no acessoacesso aosaos

    dados dados usandousando um um grafografo de de precednciaprecedncia SupondoSupondo queque existaexista a a relaorelao de de precednciaprecedncia AABB

    no no grafografo, , qualquerqualquer transaotransao queque acesseacesse A e B, A e B, devedeveacessaracessar primeiroprimeiro A e A e depoisdepois BB A A ordenaoordenao podepode ser ser baseadabaseada nana organizaoorganizao fsicafsica

    ouou lgicalgica dos dados, dos dados, ouou podepode ser ser impostaimposta de de modomodoaleatrioaleatrio somentesomente parapara controlarcontrolar a a concorrnciaconcorrncia ExistemExistem vriosvrios protocolosprotocolos baseadosbaseados emem grafosgrafos; um ; um

    dos dos maismais simples o simples o protocoloprotocolo de de grafografo emem rvorervore

    140

    ProtocolosProtocolos de de BloqueioBloqueio ProtocoloProtocolo de de GrafoGrafo emem rvorervore BloqueiosBloqueios soso todostodos exclusivosexclusivos PrimeiroPrimeiro bloqueiobloqueio podepode ser ser emem

    qualquerqualquer dadodado Os Os bloqueiosbloqueios seguintesseguintes podempodem

    ocorrerocorrer somentesomente se o dado se o dado precedenteprecedente estiverestiver bloqueadobloqueado Dados Dados podempodem ser ser desbloqueadosdesbloqueados a a qualquerqualquer instanteinstante BloqueioBloqueio maismais curtocurto queque no no protocoloprotocolo de 2 de 2 fasesfases GaranteGarante serializaoserializao de de conflitoconflito e e evitaevita deadlockdeadlock PodePode bloquearbloquear maismais dados do dados do queque reamentereamente precisaprecisa EscalasEscalas serializveisserializveis porpor esteeste protocoloprotocolo podempodem nono o o

    ser com ser com bloqueiobloqueio emem 2 2 fasesfases, e vice, e vice--versaversa

    A

    B C

    D E F

    G H

  • 141

    ProtocolosProtocolos de de BloqueioBloqueio GranularidadeGranularidade MltiplaMltipla Ao invs de bloquear um item de dados, podemos Ao invs de bloquear um item de dados, podemos

    bloquear bloquear tuplastuplas, tabelas, blocos de disco ou , tabelas, blocos de disco ou BDsBDs Podemos usar rvores para selecionar Podemos usar rvores para selecionar

    a a granularidadegranularidade do bloqueiodo bloqueio Cada n da rvore pode ser Cada n da rvore pode ser

    bloqueado individualmentebloqueado individualmente Cada nvel corresponde Cada nvel corresponde

    a uma a uma granularidadegranularidadede bloqueiode bloqueio

    BD

    R1 R2

    B1 Bn

    tx+1 tnt1 tx... ...

    ... B1

    t1 tn...142

    ProtocolosProtocolos com base com base emem TimestampsTimestamps Usam Usam timestampstimestamps (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 escritaordenar as operaes de leitura e escrita CadaCada transaotransao T T ganhaganha um um timestamptimestamp TS TS aoao iniciariniciar, ,

    com base no com base no relgiorelgio do do sistemasistema ouou emem um um contadorcontador DoisDois timestampstimestamps soso associadosassociados a a cadacada dadodado WW--TS: TS: indicaindica a a transaotransao de de maiormaior timestamptimestamp queque

    alteroualterou o valor do dadoo valor do dado RR--TS: TS: indicaindica a a transaotransao e e maiormaior timestamptimestamp queque

    leuleu o valor do dadoo valor do dado

    143

    ProtocolosProtocolos com base com base emem TimestampsTimestamps OrdenaoOrdenao de de operaesoperaes porpor timestampstimestamps No No casocaso dada transaotransao T T quererquerer lerler um dado Qum dado Q Se TS(T) < WSe TS(T) < W--TS(Q): TS(Q): T T abortadaabortada e e desfeitadesfeita

    (T (T querquer lerler um dado um dado queque jj foifoi sobrescritosobrescrito)) Se TS(T) Se TS(T) WW--TS(Q): a TS(Q): a operaooperao executadaexecutada;;

    se Rse R--TS(Q) < TS(T), TS(Q) < TS(T), entoento RR--TS(Q) = TS(T)TS(Q) = TS(T) No No casocaso dada transaotransao T T quererquerer alteraralterar um dado Qum dado Q Se TS(T) < RSe TS(T) < R--TS(Q): TS(Q): T T abortadaabortada e e desfeitadesfeita

    (T (T nono podepode alteraralterar um valor um valor queque jj foifoi lido)lido) Se TS(T) Se TS(T)

  • 147

    Protocolos Protocolos MultiMulti--VersoVerso MultiMulti--versoverso com Ordenao por com Ordenao por TimestampsTimestamps Cada verso do dado possui Cada verso do dado possui timestampstimestamps de leitura de leitura

    (R(R--TS) e escrita (WTS) e escrita (W--TS), alm do valor do dadoTS), alm do valor do dado Uma transao T sempre acessa a verso Uma transao T sempre acessa a verso QQkk do dado do dado

    com o maior Wcom 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 QQkk Ao escrever, T desfeita se TS(T) < RAo escrever, T desfeita se TS(T) < R--TS(TS(QQkk););

    seno, se TS(T) = Wseno, se TS(T) = W--TS(TS(QQkk), o valor de ), o valor de QQkk alterado; alterado; caso contrrio, uma nova verso de Q criadacaso contrrio, uma nova verso de Q criada Verses antigas, com WVerses antigas, com W--TS(TS(QQkk) < TS(T), sendo T a ) < TS(T), sendo T a

    ltima transao executada, podem ser removidasltima transao executada, podem ser removidas

    148

    Protocolos Protocolos MultiMulti--VersoVerso ExemploExemplo de de escalaescala multimulti--versoverso com com timestampstimestamps

    Read (Conta); Read (Aplic); Print (Conta.Saldo +

    Aplic.Saldo);

    TT22

    R-TS(Conta1) = 2

    R-TS(Conta1) > TS(T1) T1 e T2 abortadas

    Read (Conta);Conta.Saldo += 500; Write (Conta);

    TimestampsTimestampsTT11Read (Aplic);Aplic.Saldo = 500Write (Aplic);

    TS(T2) = 2R-TS(Conta1) = 2R-TS(Aplic2) = 2

    TS(T1) = 1R-TS(Aplic1) = 1W-TS(Aplic2) = 1

    149

    Protocolos Protocolos MultiMulti--VersoVerso MultiMulti--versoverso com Bloqueio em Duas Fasescom Bloqueio em Duas Fases Usa Usa timestampstimestamps e contador de e contador de commitscommits ((tsts--countercounter)) Distingue transaes de atualizao e somenteDistingue transaes de atualizao e somente--leituraleitura Transao de atualizao (Transao de atualizao (updateupdate)) Faz o bloqueio em duas fasesFaz o bloqueio em duas fases CCadaada writewrite criacria umauma nova nova versoverso QQkk do dado com do dado com

    TS(QTS(Qkk) = ) = tsts--countercounter quandoquando fazfaz o o commitcommit TransaoTransao somentesomente--leituraleitura ((readread--onlyonly)) No precisa manter bloqueios at o finalNo precisa manter bloqueios at o final TS(T) = TS(T) = tsts--countercounter no momento que ela se iniciano momento que ela se inicia L a verso do dado com o maior TS(L a verso do dado com o maior TS(QQkk)) TS(T) TS(T)

    150

    Protocolos Protocolos MultiMulti--VersoVerso ExemploExemplo de multide multi--versoverso c/ c/ bloqueiobloqueio emem 2 2 fasesfases

    Lock-S (Aplic);Read (Aplic); Print (Conta+Aplic);Unlock (Aplic);

    Lock-S (Conta);Read (Conta); Unlock (Conta);

    TT22

    L Aplic1 = 1000

    L Conta1 = 1000 Cria Conta2 = 1500

    TS(Conta2) = TS(Aplic2) = ts-counter = 2

    Lock-X (Conta);Read (Conta);Conta.Saldo += 500; Write (Conta);Unlock (Conta);Unlock (Aplic);

    TimestampsTimestampsTT11Lock-X (Aplic);Read (Aplic);Aplic.Saldo = 500Write (Aplic);

    TS(T2) = ts-counter = 1 L Conta1 = 1000

    TS(T1) = ts-counter = 1 L Aplic1 = 1000 Cria Aplic2 = 500

    151

    Controle de Controle de DeadlockDeadlock DeadlockDeadlock 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 prosseguiraguardando o trmino da outra para prosseguir

    BloqueadaBloqueada

    Deadlock!

    BloqueadaWrite (A);Lock-X (B);

    TT22TT11Lock-X (A);Read (A);

    Lock-S (B);Read (B); Lock-S (A);

    152

    Controle de Controle de DeadlockDeadlock Tcnicas para Controle de Tcnicas para Controle de DeadlockDeadlock Preveno de Preveno de deadlockdeadlock Evita os Evita os deadlocksdeadlocks antes que estes ocorramantes que estes ocorram Prefervel se a probabilidade de ocorrerem Prefervel se a probabilidade de ocorrerem

    deadlocksdeadlocks for muito altafor muito alta Deteco e recuperao de Deteco e recuperao de deadlockdeadlock No evita os No evita os deadlocksdeadlocks, mas os detecta e impede , mas os detecta e impede

    o bloqueio indefinido das transaes envolvidaso bloqueio indefinido das transaes envolvidas Mais eficiente se ocorrerem poucos Mais eficiente se ocorrerem poucos deadlocksdeadlocks

    RollbackRollback pode ser necessrio independentemente da pode ser necessrio independentemente da tcnica utilizadatcnica utilizada

  • 153

    Controle de Controle de DeadlockDeadlock Preveno de Preveno de DeadlockDeadlock Usurio deve sempre acessar dados na mesma ordemUsurio deve sempre acessar dados na mesma ordem Estratgias de preveno usadas por Estratgias de preveno usadas por SGBDsSGBDs EsperarEsperar--morrer: Tmorrer: Tii s espera um dado mantido por s espera um dado mantido por

    TTjj se esta for mais nova; caso contrrio Tse esta for mais nova; caso contrrio Tii abortaaborta FerirFerir--esperar: Tesperar: Tii somente espera um dado mantido somente espera um dado mantido

    por Tpor Tjj se esta for mais antiga; caso contrrio ela se esta for mais antiga; caso contrrio ela obriga Tobriga Tjj a abortar e liberar o dado (Ta abortar e liberar o dado (Tii fere Tfere Tjj)) TimeoutTimeout: 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 reiniciadaneste tempo, a transao abortada e reiniciada

    154

    Controle de Controle de DeadlockDeadlock Deteco de Deteco de DeadlockDeadlock Algoritmo verifica estado do sistema periodicamente Algoritmo verifica estado do sistema periodicamente

    para determinar se transaes esto em para determinar se transaes esto em deadlockdeadlock O sistema precisa manter informaes sobre a O sistema precisa manter informaes sobre a

    alocao dos dados e as solicitaes pendentesalocao dos dados e as solicitaes pendentes DeadlocksDeadlocks 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 deadlockdeadlock

    Grafo sem cicloGrafo sem ciclo Grafo com cicloGrafo com ciclo

    T4 T5

    T6

    T1 T2

    T3

    155

    Controle de Controle de DeadlockDeadlock Recuperao de Recuperao de DeadlockDeadlock Aps detectar o Aps detectar o deadlockdeadlock, precisamos abortar uma , precisamos abortar uma

    transao para quebrar o ciclo de esperatransao para quebrar o ciclo de espera Devemos escolher a transao em funo do custo Devemos escolher a transao em funo do custo

    do do rollbackrollback, determinado em funo do: , determinado em funo do: Tempo que a transao est em processamentoTempo que a transao est em processamento Tempo necessrio para concluso da transao Tempo necessrio para concluso da transao Nmero de acessos a dados j efetuadosNmero de acessos a dados j efetuados Nmero de acessos a dados que faltam p/ concluirNmero de acessos a dados que faltam p/ concluir Nmero de transaes a recuperar em cascataNmero 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 DadosInsero 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 operaoso conflitantes com qualquer outra operao Protocolo de Bloqueio em Duas FasesProtocolo de Bloqueio em Duas Fases Devemos bloquear o dado em modo exclusivo para Devemos bloquear o dado em modo exclusivo para

    inserir ou removerinserir ou remover

    Protocolo com base em Protocolo com base em TimestampsTimestamps Devemos Devemos inicializarinicializar WW--TS(Q) e RTS(Q) e R--TS(Q) com o TS(Q) com o

    timestamptimestamp da transao que insere o dado Qda 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 remoovalor do dado no momento da remoo

    157

    Insero e Remoo de DadosInsero e Remoo de Dados TuplasTuplas FantasmaFantasma As transaes abaixo no so conflitantes se fizermos As transaes abaixo no so conflitantes se fizermos

    controle de concorrncia por controle de concorrncia por tuplatupla, mas entram em , mas entram em conflito se forem executadas concorrentementeconflito se forem executadas concorrentementeselectselect sumsum(saldo)(saldo) insertinsert intointo contascontasfromfrom contascontas valuesvalues(123,Joo,50.00)(123,Joo,50.00) Solues possveisSolues possveis Bloquear toda a relao Bloquear toda a relao pouca concorrnciapouca concorrncia Bloquear um campo especial que indica que uma Bloquear um campo especial que indica que uma

    transao est inserindo ou removendo dadostransao est inserindo ou removendo dados Bloquear o ndice da relaoBloquear o ndice da relao

    158

    Concorrncia em Concorrncia em BDsBDs DistribudosDistribudos Controle de concorrncia essencial em Controle de concorrncia essencial em BDDsBDDs preciso garantir a consistncia e o isolamento, preciso garantir a consistncia e o isolamento,

    apesar da fragmentao e da replicao dos dadosapesar da fragmentao e da replicao dos dados Devemos evitar Devemos evitar deadlocksdeadlocks 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 BDsBDs distribudosdistribudos Bloqueio nico (Centralizado)Bloqueio nico (Centralizado) Um Um sitesite funciona como gerenciador de funciona como gerenciador de lockslocks, que , que

    administra todos os pedidos de bloqueio de dadosadministra todos os pedidos de bloqueio de dados simples, mas sujeito a falhas, e pouco simples, mas sujeito a falhas, e pouco escalvelescalvel

  • 159

    Concorrncia em Concorrncia em BDsBDs DistribudosDistribudos Bloqueio Mltiplo (Distribudo)Bloqueio Mltiplo (Distribudo) H gerenciadores de bloqueio em diferentes H gerenciadores de bloqueio em diferentes sitessites Cada gerenciador administra os bloqueios de um Cada gerenciador administra os bloqueios de um

    conjunto de dadosconjunto de dados Evita o gargalo do protocolo centralizadoEvita o gargalo do protocolo centralizado Impede o acesso ao dado se o gerenciador falharImpede o acesso ao dado se o gerenciador falhar

    Bloqueio com Cpia PrimriaBloqueio com Cpia Primria Cada dado possui uma cpia primria em um Cada dado possui uma cpia primria em um sitesite O bloqueio solicitado ao O bloqueio solicitado ao sitesite com a cpia primria com a cpia primria

    daquele dado, que administra todos os bloqueiosdaquele dado, que administra todos os bloqueios to simples e to simples e escalvelescalvel quanto o protocolo anteriorquanto o protocolo anterior Impede o acesso s rplicas se o primrio falharImpede o acesso s rplicas se o primrio falhar

    160

    Concorrncia em Concorrncia em BDsBDs DistribudosDistribudos Bloqueio pela MaioriaBloqueio pela Maioria Cada Cada sitesite possui um gerenciador que administra o possui um gerenciador que administra o

    bloqueio dos dados locaisbloqueio 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 sitessites permitirpermitir Mais complexo para implementar que os anterioresMais complexo para implementar que os anteriores

    Bloqueio ParcialBloqueio Parcial Assim como no bloqueio por maioria, cada Assim como no bloqueio por maioria, cada sitesite possui possui

    um gerenciador de bloqueio dos dados locaisum gerenciador de bloqueio dos dados locais Bloqueios compartilhados so obtidos Bloqueios compartilhados so obtidos contactandocontactando o o

    gerenciador de somente uma rplica do dadogerenciador 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 rplicasos gerenciadores de bloqueio de todas as rplicas

    161

    Concorrncia em Concorrncia em BDsBDs DistribudosDistribudos TimestampTimestamp nico (Centralizado)nico (Centralizado) Um nico Um nico sitesite define as marcas de tempo usando um define as marcas de tempo usando um

    contador lgico ou o seu relgio localcontador lgico ou o seu relgio local Sofre de problemas de confiabilidade e Sofre de problemas de confiabilidade e escalabilidadeescalabilidade

    TimestampTimestamp Global (Distribudo)Global (Distribudo) Usa o princpio de relgios lgicos (Usa o princpio de relgios lgicos (LamportLamport, 1978), 1978) Um Um timestamptimestamp formado por uma leitura do relgio formado por uma leitura do relgio

    concatenada com o identificador do concatenada com o identificador do sitesite que o gerouque o gerou SitesSites atualizam os relgios com base nos atualizam os relgios com base nos timestampstimestamps

    de de subsub--transestranses que recebem para executar que recebem para executar Mais robusto e Mais robusto e escalvelescalvel que o esquema centralizadoque o esquema centralizado

    162

    Concorrncia em Concorrncia em BDsBDs DistribudosDistribudos DeadlocksDeadlocks e Replicaoe Replicao preciso evitar preciso evitar deadlocksdeadlocks ao acessar rplicasao 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 prosseguirnenhuma das duas conseguir prosseguir Soluo: obrigar que as transaes bloqueiem as Soluo: obrigar que as transaes bloqueiem as

    rplicas na mesma ordemrplicas na mesma ordem

    DeadlocksDeadlocks e Fragmentaoe Fragmentao Situao semelhante anterior pode ocorrer quando Situao semelhante anterior pode ocorrer quando

    duas transaes bloqueiam fragmentos de dadosduas transaes bloqueiam fragmentos de dados Soluo: bloquear fragmentos seguindo uma ordem Soluo: bloquear fragmentos seguindo uma ordem

    163

    Concorrncia em Concorrncia em BDsBDs DistribudosDistribudos Deteco de Deteco de DeadlockDeadlock O algoritmo de deteco de O algoritmo de deteco de deadlockdeadlock visto visto

    anteriormente pode ser usado em anteriormente pode ser usado em BDsBDs distribudos se distribudos se usarmos o protocolo de bloqueio centralizadousarmos 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 deadlockdeadlock Para montar o grafo, um gerente central precisa Para montar o grafo, um gerente central precisa

    obter informaes sobre os obter informaes sobre os lockslocks mantidos por mantidos por todos os gerenciadores de bloqueiotodos 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 desnecessabortos desnecessriosrios Outra opo fazer a deteco de modo distribudoOutra opo fazer a deteco de modo distribudo

    164

    Concorrncia em Concorrncia em BDsBDs DistribudosDistribudos Deteco de Deteco de DeadlockDeadlock (cont.)(cont.) Na deteco distribuda, cada Na deteco distribuda, cada sitesite monta um grafo de monta um grafo de

    espera com os bloqueios mantidos localmenteespera com os bloqueios mantidos localmente Um n TUm n TEXEX adicionado ao grafo para representar as adicionado ao grafo para representar as

    esperas externas (dados esperas externas (dados bloqueados por outros bloqueados por outros sitessites)) Um ciclo envolvendo apenas Um ciclo envolvendo apenas

    ns locais indica ns locais indica deadlockdeadlock Um ciclo passando por TUm ciclo passando por TEXEX

    indica um indica um possvelpossvel deadlockdeadlock Temos que confirmar a possibilidade de Temos que confirmar a possibilidade de deadlockdeadlock

    contactandocontactando os gerenciadores dos os gerenciadores dos sitessites envolvidosenvolvidos

    TEX

    TX TY

    TZ