Analise de sistemas
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 o BD
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 de falhas; ❑ É 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 os buffers 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