Transferência entre duas contas: debita uma, credita a outra. A máquina cai no meio. E agora?
Tudo ou nada. É o módulo M6.
log e desfazer
As restrições continuam válidas depois.
restrições e aplicação
Transações simultâneas não se atrapalham.
não implementamos, vira seminário
O que foi confirmado sobrevive à queda.
é o módulo M7
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.
<T1, ABORTADA> no fim<T1, COMMIT> no logfsyncfsync que custa caro, porque espera o disco de verdade confirmarEste é o ponto exato em que o commit passa a valer. Antes do fsync, não aconteceu.
Próxima: laboratório do M6, o log e o rollback