Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Banco de Dados
● Definição de Transação:
– Conjunto de operações que forma uma unidade lógica
de processamento no BD
– Deve ocorrer de maneira completa e integral
● Uma transação inclui uma ou mais operações de acesso
ao Banco de Dados – inserção, exclusão, alterações ou
consultas
Recursos e Granularidade
T1: Transação T1
Início
//lê um item de dado X do BD e guarda em A
A = ler_item(X)
processa(A)
//escreve o valor de A em um item do BD X
escrever_item (X,A)
Fim
Finalização de uma Transação
● Commit Transaction → sucesso na execução
– Encerramento da transação com sucesso;
– Torna as atualizações permanentes no Banco de Dados;
– Todas as operações da transação são gravadas
permanentemente
● Rollback Transaction → problema na execução
– Término da transação com erro;
– Retorna o Banco de Dados à posição anterior à transação;
– A transação NÃO terá nenhum efeito sobre o Banco de Dados
ou outras transações
Tipos de Falhas
● Propriedades ACID
– Atomicidade
– Consistência
– Isolamento
– Durabilidade
Propriedades da Transação
● Atomicidade
– A transação é considerada como uma unidade
atômica
1) Ela é executada em sua totalidade
2) Não pode executar somente partes
– Caso não for possível executar em sua totalidade → as
operações são desfeitas
Propriedades da Transação
● Consistência
– O programador define as regras de consistência
– O estado de um Banco de Dados sempre deve ficar
consistente após uma transação;
– BD consistente → transação → BD consistente
Propriedades da Transação
● Isolamento
– A execução de uma transação não pode ser afetada
por outras transações
– Mesmo quando elas executam concorrentemente
– O estado do BD deve ser equivalente como se
transações fossem executadas uma de cada vez.
– Tudo deve se passar como se todos os recursos
estivessem disponíveis
Propriedades da Transação
● Durabilidade
– Os efeitos de uma transação confirmada (commit) não
podem ser perdidos
Planos de Execução das Transações
● Define a ordem de execução das operações das
transações
● Mais utilizado quando se tem 2 ou mais transações
T1: Transação T 1
A=ler_item (X); T2: Transação T 2
A = A - N; C=ler_item (X);
escrever_item (X,A); C = C + M;
B=ler_item (Y); escrever_item (X,C);
B = B + N;
escrever_item (Y,B);
Planos de Execução das Transações
● Planos Seriais:
– todas as operações das transações são executadas
consecutivamente
● Planos Não-Seriais:
– as operações das transações executadas
concorrentemente
● Escalonamento de plano de execução
– analisa o plano e define a melhor forma de executá-lo
● Usa técnicas de bloqueio de recursos
– impede que múltiplas transações acessem os itens
concorrentemente
Exemplo: Plano de Execução Serial
A=ler_item (X);
A = A - N;
escrever_item (X,A);
B=ler_item (Y);
B = B + N;
escrever_item (Y,B);
C=ler_item (X);
C = C + M;
escrever_item (X,C);
Exemplo: Plano de Execução Não-Serial
A=ler_item (X);
A = A – N;
escrever_item (X,A);
C=ler_item (X);
C = C + M;
escrever_item (X,C);
B=ler_item (Y);
B = B + N;
escrever_item (Y,B);
Exemplo: Plano Não-Serial Inválido
A=ler_item (X);
A = A – N; //vai ler o X desatualizado
C=ler_item (X);
//atualiza o X
escrever_item (X,A);
B=ler_item (Y);
B = B + N;
escrever_item (Y,B);
C = C + M;
escrever_item (X,C);
Exercício
● Escreva 3 (três) possíveis combinações (não-seriais) de
execução das transações T1 e T2 abaixo de forma que o
resultado final da execução de ambas transações seja
consistente.
T1: Transação T 1
A=ler_item (X); T2: Transação T 2
A = A - N; C=ler_item (X);
escrever_item (X,A); C = C + M;
B=ler_item (Y); escrever_item (X,C);
B = B + N;
escrever_item (Y,B);
Exercícios
● Obrigado!