Analise de sistemas

Disponível somente no TrabalhosFeitos
  • Páginas : 6 (1385 palavras )
  • Download(s) : 0
  • Publicado : 18 de abril de 2013
Ler documento completo
Amostra do texto
6.3. Tolerância a falhas em BD





Diagrama de estados de uma transação












6.1. Classificação das falhas

Tipos de Falhas

1. Falha na transação detectada pelo próprio código

Ex.: “Fundos insuficientes”



2. Falha na transação não prevista no código

Ex.: Overflow, divisão por zero



3. Falha no sistema que não danifica oBD

Ex.: System crash, Deadlock



4. Falha nos periféricos que danifica o BD

Ex.: Falha no disco, cabeçote



❑ Quando uma Ti aborta:
❑ Pode ser reiniciada
❑ Pode ser cancelada

6.2 Log (Journal, History)


❑ É um arquivo que mantém todas as operações que as transações efetuaram no BD;
❑ É usado para recuperar o sistema na ocorrência defalhas;
❑ É mantido em disco e em fita (backup).


Tipos de registros gravados no log:

1. [ Start_Transaction, T1 ] : T1 inicia a execução;
2. [ Write (X), T1, ValorAntigo, ValorNovo ]
3. [ Read (X), T1 ]
4. [ Commit, T1 ]

Obs.: Como veremos a seguir, alguns protocolos de recuperação não requerem que [ Read (X), T] seja gravado no log => menor overhead!6.3. Checkpoint

Motivação:

❑ Quando ocorrer uma falha, o sistema não precisa pesquisar todo o log, nem refazer transações que não precisem de REDO
❑ Diminuir overhead de recuperação

Solução: Checkpoints

Periodicamente, um registro de checkpoint é gravado no log

Cada gravação requer as seguintes ações:

1. Forçar a gravação do LOG em disco
2. Gravar osbuffers do BD em disco
3. Gravar um registro de checkpoint no LOG
4. Gravar o endereço do último checkpoint num arquivo de restart.

Ex.: Seja um conjunto de Tis {T0, T1 , ... , T100} executando na ordem dos índices. Suponha que ocorreu um checkpoint (último) durante a transação T68.

Recuperar {Ti / 68 X = 50, Y = 200


Modificou-se o BD sem a garantia que T iria confirmar.Solução: Recuperação com Atualizações Adiadas

❑ Todos os writes são atrasados até que Ti confirme parcialmente;
❑ Todos os writes são gravados num arquivo de log;
❑ Quando commit ocorre => BD é atualizado


Log: mantém todas as atualizações do BD. Entradas no log para cada id,transaction

1. < Ti, Início >
2. < Ti, W, X, Valor.novo >
3. < Ti, commit >

Usandoo log, o sistema pode resolver qualquer falha que não danifique o BD físico.

Algoritmo RAA (com checkpoint)

1. Iniciar da última entrada do log, voltando em direção ao checkpoint mais recente
2. Montar uma lista de Tis_Confirmadas => possuem no log, < Ti, Início > e
3. Refazer (REDO) todos os writes confirmados na ordem em que foram escritos no log


REDO (Ti) : determinao valor de todos os objetos atualizados por Ti para novos valores.

REDO (X) = REDO (REDO (REDO (X)))


Idempotente


6.4.3 Exemplo

Sejam duas transações:

T1 : transferência de fundos de $50 da conta A para B
T2 : saque de $100 da conta C

Implementadas com segue:




|T1 : Begin_Transaction_T1 |T2 :Begin_Transaction_T2 |
| Read (A, a1); | Read (C, c1) |
| a1 := a1 – 50; | c1 := c1 – 100; |
| Write (A, a1); |Write (C, c1); |
| Read (B, b1); | End_Transaction_T2 |
| b1 := b1 + 50; | |
| Write (B, b1); |...
tracking img