Banco de Dados II — 2026.2

Aula 7
Recuperação

👨‍🏫 Prof. Gustavo Pinto 🏛️ UFPA 📅 12 de novembro de 2026 🕐 7h30 – 9h

Três tipos de falha

De transação

O comando falha, ou o usuário pede rollback. Resolvido no M6.

De sistema

A máquina cai. A memória some, o disco fica. É o M7.

kill -9

De mídia

O disco morre. Só backup e replicação resolvem.

fora do escopo

A regra

Escreva no log, e force o log para o disco, antes de escrever a página de dados. Em inglês, write-ahead logging.

O que acontece na partida

Refazer precisa ser idempotente: aplicar duas vezes tem que dar o mesmo resultado que aplicar uma.

Por que refazer o que já está no disco?

Não seria mais rápido refazer só o necessário?

O critério de pronto, enfim

Um SELECT com WHERE, dentro de uma transação, e o banco volta consistente depois do kill -9 no meio do commit.

Dúvidas?

Próxima: laboratório do M7, e o kill -9. Antes disso, o exercício de hoje

📧 gpinto@ufpa.br

Exercício de hoje

<T1, INICIO>
<T1, conta, pagina 3, slot 7, antes=100, depois=250>
<T2, INICIO>
<T2, conta, pagina 3, slot 2, antes=500, depois=350>
<T1, COMMIT>
<T2, conta, pagina 9, slot 1, antes=0, depois=80>

O item 4 é a idempotência do refazer. É a propriedade que permite ler o log inteiro na partida sem precisar de checkpoint.