Professional Documents
Culture Documents
Processamento
Mdulo I:
de T ransaes
(Aulas 1 e 2)
Clodis Boscarioli
I n fmtrm t i c a
Agenda:
Introduo:
Apresentao da disciplina;
Conceito de transao;
Teoria de Serializao:
Serializao de conflito;
Serializao de viso.
Usurios Programadores Usurios Administra-
navegantes de aplicaes sofisticados dores de BD
Usurios
Viso Geral 1 1
I
i
I
u Componentes de execuo
SGBD de consultas ^
t Gerenciador
Gerenciador
de buffer
Gerenciador de transaes
de memria
t
Gerenciador
de arquivos
Armazenamento
Dados
em disco Indices
estatsticos
Arquivos de Dicionrio
dados de dados
Justificativa
Um dos critrios de classificao para SGBDs em relao ao
nmero de usurios que podem us-los ao mesmo tempo:
B D
CPU1
tempo
Exemplo:
A transferncia de fundos de uma conta corrente pra uma conta poupana
uma operao nica do ponto de vista do cliente, porm, dentro do sistemas de
banco de dados, ela envolve vrias operaes.
Um SGBD precisa:
Garantir que a execuo da transao seja completa;
Administrar a execuo simultnea de vrias transaes evitando
inconsistncias;
Uma transao que calcula o total de dinheiro do cliente poderia trabalhar com o saldo
da conta corrente antes do dbito feito pela transao de transferncia e, tambm,
verificar o saldo da poupana depois do crdito. Com isso, obteria um resultado
incorreto.
Operaes de Leitura/Escrita
As operaes de acesso ao BD que uma transao
pode fazer so:
Executar write(x):
A)
read(x); read(x);
x := x - N; x := x + M;
write(x); write(x);
read(y);
y := y + N;
write(y);
Ti
T1: read(A);
A := A - 50;
write(A);
read(B);
B := B + 50;
write(B);
Propriedades das Transaes (ACID)
A - Atomicidade: ou todas as operaes da transao so refletidas
corretamente no banco de dados ou nenhuma o ser.
Responsabilidade do programador.
Propriedades das transaes (ACID)
I - Isolamento: embora diversas transaes possam ser executadas
de forma concorrente, o sistema garante que, para todo par de
transaes T e T, T, tem a sensao de que T, terminou sua
execuo antes de T, comear, ou vice-versa. Cada transao no
toma conhecimento de outras transaes concorrentes a eia no
sistema.
Suponha uma tabela que possua 6000 tuplas que satisfaam a condio e que
na tupla 4666 houve uma falha no sistema. Neste caso, a varivel chamada
@@ERROR guardar o cdigo do erro, o comando ROLLBACK ser executado
e as 4666 tuplas j atualizadas sero automaticamente voltadas a seu estado
anterior.
Ao contrrio, se tudo correr bem, o comando COMMIT ser executado e todas
as 6000 tuplas sero atualizadas com xito.
Estados de uma Transao
Read/Write
TV T2:
Ti t2 Ti t2
read(A); read(A);
A := A - 50; temp := A * 0,1;
write(A); A := A -te m p ;
read(B); write(A);
B := B + 50; read(B);
write(B); B := B + temp;
write(B);
read(A);
temp := A * 0,1; read(A);
A := A - temp; A := A - 5 0 ;
write(A); write(A);
read(B); read(B);
B := B + temp; B := B + 50;
write(B); write(B);
Execuo Concorrente
Correta Incorreta
T, t2 Ti t2
read(A); read(A);
A := A - 50; A := A - 50;
write(A);
read(A); read(A);
temp := A * 0,1; temp := A * 0,1;
A : = A -te m p ; A := A -te m p ;
write(A); write(A);
ro1
T,
read(x);
x := x - N;
read(x)
x := x + M;
write(x);
read(y);
write(x)
y := y + N;
write(y)
Problema de Alterao Temporria
Ocorre quando uma transao altera um item de
dados e depois ela falha por alguma razo. O
item de dado acessado por outra transao
antes que o valor original seja estabelecido.
Ti
read(x);
x := x - N;
write(x);
read(x)
x := x + M;
write(x)
read(y);
falha
Problema de Resumo Incorreto
Se uma transao est calculando uma funo agregada com um
conjunto de tuplas e outras transaes esto alterando algumas
destas tuplas, a funo agregada pode calcular alguns valores
antes deles serem alterados e outros depois de serem alterados.
Ti t3
sum := 0;
read(a);
sum : sum + a;
read(x);
x := x - N;
write(x);
read(x)
sum := sum + x;
read(y);
sum := sum + y;
read(y);
y := y + N;
write(y)
Serializao (Seriao)
O sistema de banco de dados deve controlar a execuo
concorrente de transaes para assegurar que o estado do BD
permanea consistente.
1. li = read(Q) e lj = read(Q)
2. I, = read(Q) e lj = write(Q)
4. I, = write(Q) e Ij = write(Q)
Ti t2
T, t2
read(A)
Em relao a um mesmo estado inicial do
write(A)
sistema, ambas as escalas (S e esta)
read(A) produzem o mesmo estado final no sistema.
read(B)
write(A)
write(B)
read(B)
write(B)
Serializao de Conflito
Se as seguintes trocas de instrues no-conflitantes
forem feitas:
T3 t4
read(A)
write(A)
write(A)
Serializao de Conflito
A escala abaixo no serializvel por conflito, mas produz o
mesmo resultado que uma escala seqencial. Confira.
Ti t2
read(A);
A := A - 50;
write(A);
read(B);
B := B - 10;
write(B);
read(B);
B := B + 50;
write(B);
read(A);
A := A + 10;
write(A);
Teste de Serializao de Conflito
Seja S uma escala. Para saber se ela serializvel em
relao s operaes conflitantes necessrio criar um
grafo de precedencia para S.
Ti
KJ
read (A);
A := A - 50;
write (A);
read(B);
B := B + 50;
write (B);
read (A);
temp := A * 0,1;
A := A - tem p;
write(A);
read(B);
B := B + tem p;
write(B);
Teste de Serializao de Conflito
Exemplo:
T1 T 2
read(A) v y - -----------------
A := A - 50
read(A)
temp := A * 0,1 Ciclo no grafo: Se o grafo de precedncia
A := A - temp possui ciclo, ento a escala S no
write(A) serializvel por conflito.
read(B)
A ordem de serializao pode ser obtida por
meio da classificao topolgica, que
write(A)
estabelece uma ordem linear para a escala
read(B)
consistente com a ordem parcial do grafo
B := B + 50
write(B) de precedncia.
B := B + temp;
write(B)
Serializao de Viso
T1 t 2 T1 t 2 Ti t 2
No so equivalentes por viso
So equivalentes por viso
Serializao de Viso
O conceito de equivalncia por viso leva ao
conceito de serializao por viso.
Uma escala serializvel por viso se ela for
equivalente em viso a uma escala de execuo
seqencial.
Ti t2 t3
equivalente em viso escala
read(Q) seqencial <J^,J2,J3>que
uma instruo read(Q) l o valor
write(Q) inicial de Q em ambas as escalas
write(Q) e T3 executa a escrita final de Q
em ambas as escalas.
write(Q)
Serializao de Viso
Modifica-se o grafo de precedncia para
serializao por conflito para testar se o
escalonamento serializvel por viso.