um processo é o coordenador quando no log está registrado o global begin, os demais registram local begin
as ações são gravadas e depois bloqueadas.
se a mensagem não chegar, por timeout ele dá abort e cancela a transação.
Ele só faz o commit se todas as respostas forem ready.
Falhas possíveis
Do agente - se no log dele, ele naum registrou o ready, ele não comete a ação, então o coordenador aborta por timeout. Nesse caso o ag. aborta a transação através do seu log local.
Pode tmb ter havido uma falha de host após a gravação do ready (falta de energia por exemplo). Se o ready foi gravado o log e antes de ser enviado aO coordenador a falha ter ocorrido, o coord. aborta por timeout. Caso ele tenha enviado e logo após, falhado, há a possibilidade do coord. cometer a ação, dependendo das informações enviadas pelos outros agentes.
Do coordenador -
depois de gravar o prepare e antes do global commit: bloqueia a transação até mandar o prepare de novo e recomeçar daú a transação. o agente fica aguardando a volta do coord.
depois do global commit mas antes de completar a transação: também é bloqueante! (os aag, ficam bloqueados aguardando a volta do coord.)
depois de gravar o complete: nada vai ser feito (nem pode). transações completas não podem ter seus dados alterados em virtude de erros posteriores.
Mensagens perdidas:
ready ou abort do ag pro coord: o coord falha por timeout e a transaction eh abortada
prepare do coord pros ag's: o coord aborta por timeout.
Algoritmo de Protocolo de cometimento não-bloqueante de 3 fases:
qdo o coord não manda o commit cria-se uma fase a mais
há uma fase a mais onde ou ele manda um prepare to commit ou prepare to abort
não se tem commit/abort, se tem um preparo para eles.
após tds terem sinalizado q receberam o prepare to commit/abort, finalmente ele envia a msg correspondente. Caso alguém não responda, o coordenador já aborta a ação aí!
esse algoritmo tem uma falha do mal: diante de falha de coordenador, qdo se ocorre algum problema com o coord, os ag's elegem outro coord. Porém qdo ocorre uma falha na rede ond se isolam agentes a ficarem em partições de agentes diferentes, um dos grupos fica sem coordenador e elege mais um, causando um 2º coordenador na ação. pode ocorrer também que cada uma das partições aja de uma maneira sobre a transação
é +seguro aceitar o bloqueio (protocolo de 2 fases, com bloqueio parcial dos hosts) para não ocorrer este problema. a solução é tomar medidas para uma rápida recuperação do coordenador.
Definição de Serialização e "Isolação" (ou visibilidade): Página 37 do PDF
Escalonamento concorrente: as transações sãoexecutadas concorrentemente (intercaladas)
Escalonamento serial: cada transação é executada por vez, criando uma série de execuções por transação
um escalonamento serial por definição é correto.
para haver conflito entre operações concorrentes, pelo menos uma ação tem que ser escrita, sendo de transações distintas. (Read/Write ou Write/Write)
Lock - controla a concorrência p/ realizar a serializabilidade (resolvem conflitos)
IMPORTANTE: Página 49, 1º parágrafo
terça-feira, 6 de maio de 2008
Assinar:
Postagens (Atom)