Controle de concorrencia- Base de dados
-
Upload
a824220079 -
Category
Documents
-
view
48 -
download
3
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