Académique Documents
Professionnel Documents
Culture Documents
II
Thiago Mendes (thiago.mendes@ymail.com)
Transaes
Banco de Dados II
Agenda
Introduo
Estados de uma transao
Execuo Concorrente
Transaes
TRANSAO
Operaes de
Leitura/Escrita
read(x): que transfere o item de dados x do BD para um
buffer local alocado transao que executou a operao
de read. O valor de x colocado dentro de uma varivel
de programa.
write(x): que transfere o item de dados x do buffer local
da transao que executou o write de volta para o BD. O
valor da varivel de programa passado para o item de
dado no BD.
OBS.: para fins de simplificao, o item de dados e a
varivel de programa correspondente sero
representados da mesma forma, x.
Exemplo de Transao
read(A);
A := A - 50;
write(A);
read(B);
B := B + 50;
write(B);
Exemplo
Propriedades das
Transaes
Propriedades das
Transaes
A execuo concorrente de vrias transaes implica no
intercalamento de suas operaes. Se este intercalamento
feito de forma inconveniente, inconsistncias sero
geradas.
No exemplo dado, se uma transao concorrente ler o
valor de A antes dele ser escrito mais depois do
processamento A-50 ter sido feito, ela estar lendo um
valor inconsistente.
Execues em srie resolvem este problema mas a
concorrncia benfica por causa do tempo de execuo
(melhora do desempenho).
Assegurar o isolamento de responsabilidade do
Controlador de Concorrncia.
Propriedades das
Transaes
Operaes Adicionais
begin transaction
update TABELA1 set CAMPO1 = NOVO VALOR
where CAMPO2 = 35
if $ERROR <> 0
rollback
else
commit
end transaction
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.
Operao com
operadores
Arquitetura
Log de Transaes
Registro de todas as operaes (alteraes)
realizadas no banco de dados;
Base para o processo de recuperao (Recovery)
Atualizao anterior operao realizada sobre os
dados;
Atualizao fsica (I/O), sem utilizao de buffers.
Caractersticas:
Interrupo do SGBD;
Queda do sistema;
Falta de energia;
Deteco de uma situao inesperada ou exceo:
saldo insuficiente.
Com sucesso
ou com falha.
Estados de uma
Transao
Estados de uma
Transao
Consideraes
Consideraes
Gerenciamento de
Transaes - Recuperao
Gerenciamento de
Transaes - Recuperao
Gerenciamento de
Transaes - Recuperao
Gerenciamento de
Transaes - Recuperao
Gerenciamento de
Transaes - Recuperao
Para recuperar os dados da forma descrita, utilizaremos o log fsico das transaes. Iremos
encontrar:
T1: I1
T1:I2
T2: I4
T1: I3
T1: COMMIT
T2:I5
T4: I9
Checkpoint
T2: I6
T2: COMMIT
T4: I10
T3: I7
T4: I11
T3: I8
T4: I12
T5: I15
T3: D1
T3: COMMIT
T4: I13
T5: I16
Gerenciamento de
Transaes - Recuperao
Gerenciamento de
Transaes - Recuperao
T1:I2
T2: I4
T1: I3
T1: COMMIT
T2:I5
T4: I9
Checkpoint
T2: I6
T2: COMMIT
T4: I10
T3: I7
T4: I11
T3: I8
T4: I12
T5: I15
T3: D1
T3: COMMIT
T4: I13
T5: I16
Gerenciamento de
Transaes - Recuperao
Gerenciamento de
Transaes - Recuperao
Exerccios
Exerccios
Respostas
A. Sob o ponto do SGBD, o banco de dados estava
ntegro porque as transaes estavam em
processo de execuo durante a emisso do 1.
e o 2. extrato, e ao fim a transao finalizou
sucesso.
No ponto de vista do analista, o banco de dados
no estava ntegro porque no momento da
emisso do 1. extrato, aps a realizao de
operao de saque, no houve alterao do
saldo bancrio.
Exerccios
Respostas
B. Atomicidade: Violada, porque a transao
ocorreu em duas etapas.
Consistncia: Violada, porque no momento de
emisso do 1 extrato o saldo bancrio no
refletiu a operao de saque realizada
anteriormente. No ponto de vista do usurio,
houve inconsistncia.
Isolamento: Violada, porque o usurio teve
acesso aos dados antes da finalizao da
transao.
Durabilidade: Dados registrados corretamente
no banco de dados.
Exerccios
Exerccios
Thiago mendes banco de dados ii
- favenorte
Exerccios
Dados armazenados no buffer aguardando a
prxima instruo para liberar esses dados da
memria do computador.
Executa o comando COMMIT.
O SGBD copia os dados da memria para o disco
rgido para um arquivo de banco de dados e libera a
memria. Estes dados se tornam dados persistentes.
Falha de transao
Falha de sistema
Read / write
Estados da transao
Commit / rollback
checkpoint
Relembrando
Execuo Concorrente
Sequencialmente: uma transao Ti termina antes
do incio ou comea aps o final de uma transao Tj
Concorrentemente: partes das transaes Ti e Tj
podem ser processadas em paralelo
Execuo Concorrente
Execuo Concorrente
O processador executa cada transao por um
tempo, alternando entre as transaes
Transaes tm sua execuo retomada
ciclicamente
Execuo Concorrente
Execuo Concorrente
Execuo Sequencial
(serial)
Thiago mendes banco de dados ii
- favenorte
Execuo Concorrente
Incorreta
Correta
Execuo Concorrente
isolamento -> saldo total no preservado
Execuo Concorrente
Na escala concorrente anterior, se T1 falha, T2 tem
que ser refeita, pois leu um valor modificado por T1
Nestes casos, a recuperao feita em cascata ->
cancelar transaes que leram valores invlidos
Rollback em cascata pode ser evitado obrigando que
T2 leia o valor escrito por T1 s aps o commit de T1
Se a efetivao de T2 ocorrer antes do commit de T1
ser impossvel fazer o rollback em cascata
Problemas na
Concorrncia
alteraes perdidas;
alterao temporria (ou leitura
resumo incorreto;
leitura no-repetitiva.
Problema de
Problema de
suja);
Problema do
Problema da
Problema de Alteraes
Perdidas
Problema de Alterao
Temporria
Problema de Resumo
Incorreto
Escalonamento
Escalonamento
Escalonamento
Escalonamento
Dois escalonamentos so ditos equivalentes se a ordem de
quaisquer duas operaes conflitantes for a mesma nos dois
escalonamentos.
Serializao
Serializao de Conflito
1. Ii = read(Q) e Ij = read(Q)
A sequncia de execuo de Ii e Ij no importa, j
que o mesmo valor de Q lido por Ti e Tj,
independentemente da ordem destas operaes.
2. I i = read(Q) e Ij = write(Q)
Se Ii vier antes de Ij, ento Ti no l o valor de Q
que escrito por Tj na instruo Ij.
Se Ij vier antes de Ii, ento Ti l o valor de Q que
escrito por Tj.
Assim, a ordem de Ii e Ij importa.
Serializao de Conflito
3. Ii = write(Q) e Ij = read(Q)
A ordem de Ii e Ij importa por razes semelhantes s do
caso anterior.
4. Ii = write(Q) e Ij = write(Q)
Como ambas as instrues so operaes de escrita, a
ordem dessas instrues no afeta Ti ou Tj.
Entretanto, o valor obtido pela prxima instruo read(Q)
em S afetado, j que somente o resultado da ltima das
duas instrues write(Q) preservado no banco de dados.
Se no houver nenhuma outra instruo de write(Q)
depois de Ii e Ij em S, ento a ordem de Ii e Ij afeta
diretamente o valor final de Q no que se refere ao estado
do banco de dados aps a execuo da escala S.
Serializao de Conflito
Serializao de Conflito
Serializao de Conflito
Se Ii e Ij so instrues de transaes
diferentes e no entram em conflito, ento
podemos trocar a ordem de Ii e Ij para produzir
uma nova escala de execuo S.
Diz-se que S e S so equivalentes j que todas
as instrues aparecem na mesma ordem em
ambas as escalas de execuo com exceo de Ii
e Ij, cuja ordem no importa.
Escala S
Serializao de Conflito
Serializao de Conflito
read(B) de T1 por read(A) de T2;
write(B) de T1 por write(A) de T2;
write(B) de T1 1 por read(A) de T2.
... uma escala com execues seriais ser obtida.
Serializao de Conflito
Serializao de Conflito
Serializao de Conflito
Teste de Serializao de
Conflito
Teste de Serializao de
Conflito
Thiago mendes banco de dados ii
- favenorte
Teste de Serializao de
Conflito
Serializao de Viso
Considere duas escalas de execuo S e S, com o
mesmo conjunto de transaes participando de
ambas. As escalas S e S so ditas equivalentes
por viso se as trs condies seguintes forem
satisfeitas:
Se na escala S a transao Ti l o valor inicial de um
dado, o mesmo deve ocorrer na escala S
Se na escala S a transao Ti l o valor de um dado
escrito por Tj, o mesmo deve ocorrer em S
Se na escala S a transao Ti escreve o valor final de
Q, o mesmo deve ocorrer em S
Serializao de Viso
Serializao de Viso
Continua....
Referncias bibliogrficas