ACID e Gerenciamento de
Transações
ACID
Atomicidade
Consistência
Isolamento
Durabilidade
Atomicidade
● Todas as operações da transação são refletidas
corretamente no banco de dados, ou nenhuma
delas.
04/05/2017 3
Atomicidade
Átomo
Principal propriedade do átomo é que ele é indivisível.
Consistência
● A execução de uma transação isolada preserva a
consistência do Banco de Dados.
● A execução de uma transação deve levar o banco
de dados de um estado consistente a um outro
estado consistente, ou seja, uma transação deve
respeitar as regras de integridade dos dados
Consistência
Exemplo
● Restrição de Chave Primária.
● A chave primária não pode ter valores nulls e
duplicados.
● Integridade Referencial – não é possível
inserir registros numa Chave Estrangeira que
não possua Chave Primária associada.
04/05/2017 6
Isolamento
● Embora várias transações executadas
simultaneamente sejam isoladas uma da
outra, de modo que cada uma tenha a
impressão de que nenhuma outra transação
esta sendo executada simultaneamente com
ela
04/05/2017 7
Isolamento
● Em sistemas multiusuários, várias transações
podem estar acessando o mesmo registro (ou
parte do registro) no banco de dados. Por
exemplo, se um usuário tentasse alterar um
registro e um outro estivesse tentando ler este
mesmo registro.
04/05/2017 8
Durabilidade
● Depois de uma transação for completada com
sucesso, as mudanças que ela fez ao banco
de dados persistem, mesmo que existam
falhas no sistema.
04/05/2017 9
Durabilidade
● Depois de confirmada, pode ter qualquer falha
de hardware e etc.
● A transação será guardada de qualquer jeito
no HD.
04/05/2017 10
O que é uma Transação
●Uma transação é uma unidade lógica do
processamento do banco, que inclui uma ou
mais operações de acesso ao banco de dados
que precisa ser completada (ou desfeita)
integralmente para garantir precisão.
Essas operações podem incluir inclusão,
●
exclusão, modificação ou seleção. (DML)
04/05/2017 11
Inicio de uma Transação
● DML (Linguagem de Manipulação de Dados)
– INSERT
– UPDATE
– DELETE
● START TRANSACTION
– Sinaliza ao Banco de Dados o início de uma
transação.
04/05/2017 12
Transação completada ou Desfeita
● Commit (confirmado)
– Confirma a transação no banco e torna as
modificações duráveis.
● Rollback (voltar a atrás)
– Volta atrás tudo deixando o banco consistente.
04/05/2017 13
SGBD - MySQL
● Engine InnoDB
– Suporte total a ACID.
– Chaves estrangeiras, Transações e Isolamento.
04/05/2017 14
Transação
START TRANSACTION
UPDATE employees ....
INSERT departments ....
DELETE departments ...
COMMIT;
04/05/2017 15
Transações
• É uma unidade de • Ao seu término o banco
trabalho, ou seja, todas deve estar em um
as operações associadas estado consistente
a uma transação devem (Corretude);
ser executadas até o
final, ou nenhuma deve
ser executada
(Atomicidade);
Commit e Rollback
• Commit: Aplica todas as • Rollback: Desfaz todas
alterações feitas no as modificações feitas
banco de dados; durante uma transação;
– Indica que a transação foi – Indica que a transação foi
concluída com sucesso. concluída com falha.
Transação Confirmada
UPDATE employees ....
Bloco Atômico
INSERT departments ....
DELETE departments ...
COMMIT;
-> Dados serão gravados definitivamente a transação
termina.
04/05/2017 18
Transação Destruída
UPDATE employees ....
Bloco Atômico
INSERT departments ....
DELETE departments ...
ROLLBACK;
-> Todos os dados são descartados e a transação
termina.
04/05/2017 19
Transações concorrentes
Um SGBD recebe
transações de diversos
usuários
simultâneamente;
Dependendo da forma
como estas transações
forem escalonadas, elas
podem colocar o banco
em um entado
inconsistente, mesmo
que cada transação, se
executada sozinha, não
faça isso.
Problemas oriundos da concorrência
Dirty reads • Phantom reads
Uma transação lê dados – Uma transação roda pela
alterados e ainda não segunda vez uma query e
comitados por outra descobre que outra
transação; transação comitada
Nonrepeatable (fuzzy) inseriu novas linhas que
reads são retornadas pela
Uma transação relê dados query.
previamente lidos e
descobre que outra
transação comitada alterou
ou apagou estes dados;
Protocolos baseados em bloqueios
(locks)
Um modo de assegurar a • Bloqueio partilhado
seriabilidade é requerer que
o acesso a um item de (shared lock): a
dados seja feito de maneira transação pode ler o
mutuamente exclusiva; item, mas não pode
Uma transação que gravá-lo;
necessita alterar um item
de dados faz o bloqueio • Bloqueio exclusivo
deste item no momento da (exclusive lock): a
leitura do item;
transação pode ler e
Para que uma transação
bloqueie um item, ele deve gravar o item.
estar desbloqueado.
Bloqueio infinito (Dead lock)
• Ocorre quando todas as
transações estão
esperando pelo término
de outra transação;
• Se o SGBD percebe um
deadlock, ele mata
transações até resolver
o problema.
Níveis de isolamento (isolation levels)
Isolation level Dirty read Nonrepeatable Phantom read
read
Read Possível Possível Possível
uncommited
Read commited Não Possível Possível
possível
Repeatable read Não Não possível Possível
possível
Serializable Não Não possível
possível
• Read commited
– Somente lê dados que foram comitados;