Banco de Dados II
ü Conceitos de transação Banco de Dados II
Transações Transações
ü Um banco de dados precisa garantir a execução ü Para assegurar a integridade dos dados, é exigido que o
apropriada das transações a despeito de falhas, ou seja, sistema de banco de dados mantenha as seguintes
ou uma transação é executada por completo ou propriedades das transações:
nenhuma parte dela é executada;
ü Atomicidade: Ou todas as operações são refletidas
ü Um banco de dados deve garantir a execução simultânea corretamente no banco de dados ou nenhuma o será;
de transações de modo a evitar a ocorrência de
ü Consistência: A execução de uma transação isolada
inconsistências;
(ou seja, sem a execução concorrente de outra
transação) preserva a consistência do banco de dados;
ü Isolamento: Cada transação não toma conhecimento
de outras transações concorrentes no sistema;
Instituto d e Informática - Prof. Israel / Prof. Menotti Instituto d e Informática - Prof. Israel / Prof. Menotti
Transações Transações
ü Para assegurar a integridade dos dados, exigimos que o ü Considere a seguinte transação que transfere R$ 50,00
sistema de banco de dados mantenha as seguintes da conta A para a conta B:
propriedades das transações: ü T1: read(A);
ü Durabilidade: Depois da transação completar-se com A := A - 50;
sucesso, as mudanças que ela faz no banco de dados
persistem até mesmo se houver falha no sistema; write (A);
Instituto d e Informática - Prof. Israel / Prof. Menotti Instituto d e Informática - Prof. Israel / Prof. Menotti
1
Transações Transações
Transações Transações
ü Os sistemas de banco dados, normalmente, permitem ü Para resolver esse problema estaremos vendo os
que diversas transações sejam executadas ao mesmo schedules ou escalas. São eles que ajudarão na ordem de
tempo. Esse ponto exige um processo adicional visto que execução das transações: Consideremos T1 que transfere
é preciso garantir a consistência dos dados; R$ 50 da conta A para a conta B:
ü Por que então realizar concorrência de transações: ü T1: read(A);
A := A - 50;
ü Uma transação consiste em vários passos, algumas
envolvem I/O e outras CPU, logo, esses dois tipos de write(A);
Transações Transações
ü T2 que transfere 10% do saldo da conta A para a conta ü Escala 1: Uma escala seqüencial com T1 e T2:
B: T1: read (A);
Os valores finais A = R$ 855
ü T2: read(A); A := A - 50;
e B = R$ 2145, onde A + B
write(A);
temp := A * 0.1 continuaria sendo = R$ 3000
read (B);
A := A - temp ;
B := B + 50;
write(A); write(B);
read (B); T2: read (A);
B := B + temp ; temp := A * 0.1
A := A - temp;
write(B);
write(A);
ü Consideremos A = R$ 1000 e B = R$ 2000. read (B);
B := B + temp;
write(B);
Instituto d e Informática - Prof. Israel / Prof. Menotti Instituto d e Informática - Prof. Israel / Prof. Menotti
2
Transações Transações
ü Escala 2: Uma escala seqüencial com T2 e T1: ü Escala 3: Caso não se tenha um controle da execução
T2: read (A); concorrente poderíamos ter a seguinte escala
Os valores finais A = R$ 850
temp := A * 0.1 inconsistente: Os valores finais A = R$ 950
e B = R$ 2150, onde A + B
A := A - temp; T1: read (A);
continuaria sendo = R$ 3000 e B = R$ 2100, onde A + B
write(A); A := A - 50;
seria = R$ 3050 --> sumindo
read (B); T2: read(A);
50
B := B + temp; temp := A * 0.1
A := A - temp ;
write(B);
write (A);
T1: read (A);
write (A); read(B);
A := A - 50;
read(B);
write(A);
B := B + 50;
read (B);
write(B);
B := B + 50; B := B + temp ;
write(B); write (B);
Instituto d e Informática - Prof. Israel / Prof. Menotti Instituto d e Informática - Prof. Israel / Prof. Menotti
Transações Transações
ü O sistema de Banco de Dados deve controlar a execução ü Uma linguagem de manipulação de dados deve possuir
concorrente das transações para garantir que o banco de um construtor para especificar o conjunto de ações que
dados permaneça consistente; constitui uma transação;
ü Com esse intuito o sistema de banco de dados executará ü No padrão SQL-92 uma transação começa subentendido
diversas formas de escalas e controles, entre elas temos a e termina nos seguintes casos:
serialização de conflito e visão serializada ;
ü Commit: Executa a efetivação da transação corrente;
üRollback: Aborta a transação corrente;
ü Normalmente no padrão SQL o controle de execução
das transações correntes dar-se por serialização;
Instituto d e Informática - Prof. Israel / Prof. Menotti Instituto d e Informática - Prof. Israel / Prof. Menotti
Transações Transações
ü Um meio para se garantir a serialização é obrigar que o ü Um sistema está em estado de dealock se há um conjunto
acesso aos itens de dados seja feito de maneira de transações tal que toda a transação desse conjunto
mutuamente exclusiva, isto é enquanto uma transação está esperando uma outra transação contida nessa
acessa a um item de dados, nenhuma outra transação mesma transação;
pode modificá-lo;
ü Os bloqueios podem ser:
ü Compartilhados: Se uma transação T1 obteve um
bloqueio compartilhado sobre o item Q, então T2
pode ler mas não escrever em Q;
üExclusivo: Se uma transação T1 obteve um bloqueio
exclusivo do item Q, então T2 pode tanto ler como
escrever Q;
Instituto d e Informática - Prof. Israel / Prof. Menotti Instituto d e Informática - Prof. Israel / Prof. Menotti