Você está na página 1de 3

Transações

Banco de Dados II
ü Conceitos de transação Banco de Dados II

ü Uma transação é uma unidade de execução de programa


que acessa e, possivelmente, atualiza vários itens de
dados;
ü Uma transação, geralmente, é o resultado da execução
de um programa de usuário escrito em uma linguagem
de manipulação de dados de alto nível ou em uma
linguagem de programação (SQL, COBOL, VB,
Centura, Java , etc...)
ü As transações serão uma única unidade lógica de
Transações em Banco de trabalho;
Dados
Instituto d e Informática - Prof. Israel / Prof. Menotti Instituto d e Informática - Prof. Israel / Prof. Menotti

Transações Transações

ü Conceitos de transação (cont.) Banco de Dados II


ü Conceitos de transação (cont.) Banco de Dados II

ü 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

ü Conceitos de transação (cont.) Banco de Dados II


ü Exemplos de transações ACID Banco de Dados II

ü 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);

ü Essas propriedades são chamadas freqüentemente de read(B);


propriedades ACID (Atomicidade, Consistência, B := B + 50;
Isolamento e Durabilidade)
write (B);

Instituto d e Informática - Prof. Israel / Prof. Menotti Instituto d e Informática - Prof. Israel / Prof. Menotti

1
Transações Transações

ü Exemplos de transações ACID: Análise de


Banco de Dados II
cada ü Exemplos de transações ACID: Análise de
Banco de Dados II
cada
uma unitariamente uma unitariamente
ü Consistência: A soma de A com B deve permanecer ü Durabilidade: Caso a transação tenha sido finalizada sem
inalterada após a execução da transação; falhas, o banco de dados deverá permitir que esses dados
permaneçam inalterados mesmo em falhas após a
ü Atomicidade: Consideramos A = R$ 1000 e B = R$ 2000 e
transação ter sido encerrada;
durante a execução da transação ocorreu uma falha
(falta de energia, falhas de máquina, etc...) ü Isolamento: Em um determinado momento teremos o
imediatamente posterior ao write(A), dessa forma banco de dados inconsistente e a propriedade de
teríamos o Banco de Dados inconsistente A = R$ 950 e B isolamento garante que nesse momento (após o write(A)
= R$ 2000, ou seja sumiram R$ 50. Atomicidade é por exemplo) uma outra transação não conseguirá
garantir que em casos de falhas a transação não seja acessar esse dados inconsistente;
executada em nenhuma parte, retornando ao estado
inicial;
Instituto d e Informática - Prof. Israel / Prof. Menotti Instituto d e Informática - Prof. Israel / Prof. Menotti

Transações Transações

ü Execuções concorrentes Banco de Dados II


ü Execuções concorrentes Banco de Dados II

ü 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);

atividades podem ser executadas em paralelo. read(B);


B := B + 50;
ü Pode existir uma mistura de transação em execução,
write(B);
algumas curtas e outras longas. Com uma execução
seqüencial poderíamos ter algumas transações
aguardando muito para ser executada;
Instituto d e Informática - Prof. Israel / Prof. Menotti Instituto d e Informática - Prof. Israel / Prof. Menotti

Transações Transações

ü Execuções concorrentes Banco de Dados II


ü Execuções concorrentes Banco de Dados II

ü 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

ü Execuções concorrentes Banco de Dados II


ü Execuções concorrentes Banco de Dados II

ü 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

ü Execuções concorrentes Banco de Dados II


ü Transação em SQL Banco de Dados II

ü 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

ü Bloqueios ou Locks Banco de Dados II


ü Deadlocks Banco de Dados II

ü 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