Banco de Dados II — 2026.2

Aula 6
Transações

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

O problema

Transferência entre duas contas: debita uma, credita a outra. A máquina cai no meio. E agora?

ACID

Atomicidade

Tudo ou nada. É o módulo M6.

log e desfazer

Consistência

As restrições continuam válidas depois.

restrições e aplicação

Isolamento

Transações simultâneas não se atrapalham.

não implementamos, vira seminário

Durabilidade

O que foi confirmado sobrevive à queda.

é o módulo M7

O log

Antes de alterar qualquer dado, o minidb escreve no log um registro dizendo o que vai mudar, com o valor antes e o valor depois.

<T1, INICIO>
<T1, aluno, pagina 3, slot 7, antes=100, depois=250>
<T1, aluno, pagina 9, slot 2, antes=500, depois=350>
<T1, COMMIT>

O valor antes serve para desfazer. O valor depois serve para refazer, no módulo M7.

ROLLBACK

COMMIT

Este é o ponto exato em que o commit passa a valer. Antes do fsync, não aconteceu.

Dúvidas?

Próxima: laboratório do M6, o log e o rollback. 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, conta, pagina 9, slot 1, antes=0, depois=80>
<T1, COMMIT>

Guardem as respostas. Este mesmo log volta na aula de recuperação, e as respostas de hoje precisam continuar valendo lá.