Escolar Documentos
Profissional Documentos
Cultura Documentos
Transao
Rodrigo Spnola
Agenda
Definies iniciais
Controle de Concorrncia
Estados de uma Transao
Propriedades de uma Transao
Log de Transaes
Controle de Concorrncia
DEFINIES INICIAIS
12/09/2012
Transaes Algumas
Definies
Mecanismo para se descrever unidade lgica de
processamento em banco de dados
SGBDs so em geral multiusurios
Uma transao totalmente executada ou nada dela
(nenhum comando) realizado
Baseado no conceito de Redundncia garantir que qualquer
pedao da informao possa ser reconstitudo a partir de
outras informaes armazenadas
4
Transaes Algumas
Definies
Para garantir o processamento de vrias
transaes necessrio o controle de
concorrncia
Necessrio tambm mecanismo de
recuperao para problemas de falhas de
transao.
Transaes Algumas
Definies
Unidade lgica de processamento em um SGBD
Composta de uma ou mais operaes
seus limites podem ser determinados em SQL
12/09/2012
Transaes Algumas
Definies
Uma transao possui uma ou mais operaes ao
banco de dados, incluindo operaes de incluso,
excluso, modificao e recuperao
Para especificar os limites da transao podemos
usar begin transaction e end transaction
Um programa pode conter vrias transaes
O tamanho do item de dado envolvido na transao
denomina-se granularidade, que pode ser um
registro ou um bloco de disco.
7
Transaes - Gerenciamento
Read(x)
Encontra bloco do disco em que x est armazenado.
Copia bloco para buffer da memria principal.
Copia o item x do buffer para a varivel do programa.
Write (x)
Encontra bloco do disco em que x est armazenado.
Copia o bloco para buffer da memria principal.
Copia x da varivel do programa para o buffer.
Armazena o bloco atualizado do buffer para o disco (imediatamente ou
depois)
Programa 1
B
A
Memria
Memria
Programa 2
8
Transaes - Gerenciamento
Controle de concorrncia
Coordena as aes de processos que operam em
paralelo
acessam dados compartilhados
potencialmente interferem uns com os outros
Recuperao
Assegura que falhas de software e hardware no
corrompem dados persistentes
12/09/2012
CONTROLE DE CONCORRNCIA
10
Transaes - Controle de
concorrncia
Transaes ocorrem de forma concorrente
Se duas transaes acessam o mesmo item do banco
e suas operaes so entrelaadas necessrio o
controle da concorrncia.
Por que o controle de concorrncia necessrio?
Problema de perda de atualizao
Problema da dependncia de atualizao no confirmada
Problema de funo de agregao incorreta (sumrio
incorreto)
11
Transaes - Controle de
concorrncia
Problema da perda de atualizao
T1
T2
Read (X)
X=X-N
Read (X)
X=X+M
tempo
Write (X)
Read (Y)
Write (X)
Y= Y+ N
Write (Y)
12
12/09/2012
Transaes - Controle de
concorrncia
Dependncia de uma atualizao no confirmada
(Leitura de sujeira dirty read)
T1
T2
Read (X)
X=X-N
Write (X)
Read (X)
X=X+M
Write (X)
tempo
Read (Y)
FALHA
13
Transaes - Controle de
concorrncia
Problema do sumrio incorreto
T1
T2
Sum = 0
Read (A)
Sum = Sum + A
tempo
Read (X)
X=X-N
Write (X)
Read (X)
Sum = Sum + X
Read (Y)
Sum = Sum + Y
Read (Y)
Y= Y+ N
Write (Y)
14
Transaes - Controle de
concorrncia
Begin Transaction: inicia a transao de forma
explcita
Commit Transaction: encerra a transao com
sucesso e torna a atualizao permanente
Rollback Transaction: Trmino de transao
com erro, retorna o banco para posio
anterior transao
15
12/09/2012
Transaes - Recuperao
Se todas as operaes na transao so completadas
com sucesso tem efeito permanente no banco de
dados
Se uma operao falhar nada ter efeito no banco
Tipos de falhas :
Erros de hardware, software ou rede;
Erros de sistemas ou transao;
Condies de exceo detectados na transao.
16
17
18
12/09/2012
Ativa
finalizar
transao
encerramento
com sucesso
encerramento
sem sucesso
Efetivada
transao deve
ser desfeita
concluso
da transao
com sucesso
Em processo de aborto
concluso
da transao
sem sucesso
Concluda
19
Ativa
finalizar
transao
encerramento
com sucesso
encerramento
sem sucesso
Estado inicial de Efetivada
toda
transao selecionada
para concluso
execuo.
transao deve
ser desfeita
da transao
Enquanto ativa, uma
com transao
sucesso executa
uma ou mais operaes read e write
Em processo de aborto
concluso
da transao
sem sucesso
Concluda
20
Ativa
finalizar
transao
encerramento
sem sucesso
Efetivada
encerramento
com sucesso
concluso
da transao
sem sucesso
concluso
da transao
com sucesso
Concluda
21
12/09/2012
finalizar
transao
Ativa
encerramento
com sucesso
encerramento
sem sucesso
Efetivada
transao deve
Entra nesse estado aps oser
SGBD
confirmar
desfeita
que todas as modificaes da transao
esto garantidas no BD (COMMIT OK).
concluso
da transao
com sucesso
Concluda
22
Ativa
finalizar
transao
encerramento
com sucesso
encerramento
sem sucesso
Efetivada
transao deve
ser desfeita
Ativa
encerramento
com sucesso
Efetivada
concluso
da transao
com sucesso
Em processo de aborto
concluso
da transao
sem sucesso
Concluda
24
12/09/2012
PROPRIEDADES DE UMA
TRANSAO
25
Propriedades de uma
Transao
Requisitos que sempre devem ser atendidos
por uma transao
Chamadas de propriedades ACID
Atomicidade
Consistncia
Isolamento
Durabilidade ou Persistncia
26
Atomicidade
Princpio do Tudo ou Nada
ou todas as operaes da transao so efetivadas
com sucesso no BD ou nenhuma delas se efetiva
preservar a integridade do BD
Responsabilidade do subsistema de
recuperao contra falhas (subsistema de
recovery) do SGBD
desfazer as aes de transaes parcialmente
executadas
27
12/09/2012
Consistncia
Uma transao sempre conduz o BD de um
estado consistente para outro estado
tambm consistente
Responsabilidade conjunta do
DBA
definir todas as RIs para garantir estados e transies
de estado vlidos para os dados
exemplos: salrio > 0; salrio novo > salrio antigo
subsistema de recovery
desfazer as aes da transao que violou a integridade
28
Isolamento
No contexto de um conjunto de transaes
concorrentes, a execuo de uma transao Tx deve
funcionar como se Tx executasse de forma isolada
Tx no deve sofrer interferncias de outras transaes
executando concorrentemente
29
Isolamento
T1
T2
read(A)
T1
T2
read(A)
A = A 50
A = A 50
write(A)
read(A)
read(A)
A = A+A*0.1
A = A+A*0.1
write(A)
write(A)
read(B)
read(B)
write(A)
B = B + 50
read(B)
write(B)
T1 interfere
em T2
B = B + 50
read(B)
B=B-A
write(B)
escalonamento vlido
write(B)
B=B-A
write(B)
escalonamento invlido
T2 interfere
em T1
30
10
12/09/2012
Durabilidade ou Persistncia
Deve-se garantir que as modificaes
realizadas por uma transao que concluiu
com sucesso persistam no BD
nenhuma falha posterior ocorrida no BD deve
perder essas modificaes
31
Transaes - Propriedades
(ACID)
Subsistema
de
Recuperao
Controle de
Concorrncia
Restries de
Integridade/
Programador
Atomicidade
Consistncia
Isolamento
Durabilidade
32
LOG DE TRANSAES
33
11
12/09/2012
Transaes - Log de
transaes
Para ter capacidade de se recuperar de falhas
que afetam a transao o sistema mantm um
log
No log so registradas todas as operaes das
transaes que afetam valores nos bancos de
dados (alteraes)
O log mantido em disco
34
Transaes - Log de
transaes
Periodicamente o log copiado para fita
Como o log contm todos os registros das operaes
que alteraram qualquer item do banco, possvel
desfazer (undo) o efeito destas operaes ou refazer
as operaes at um certo ponto
Base para o processo de recuperao Recovery
36
12
12/09/2012
Transaes - Modificaes no
BD
Modificaes Adiadas: O BD no atualizado
at que a transao alcance o commit.
Modificaes Imediata: O BD modificado
antes de alcanar o commit. As informaes
do log so gravadas no meio estvel a fim de
possibilitar a recuperao.
37
tf
Tempo
T1
T2
T3
T4
T5
Ponto de checagem
(tempo, tc)
Falha no sistem
(tempo, tc)
39
13
12/09/2012
CONTROLE DE CONCORRNCIA
40
Controle de Concorrncia
SGBD
sistema multiusurio em geral
diversas transaes executando simultaneamente
Controle de Concorrncia
Soluo mais eficiente
execuo concorrente de transaes de modo a preservar o isolamento
escalonamento (schedule) no-serial e ntegro
T2
T1
read(X)
read(X)
X = X 20
X = X 20
write(X)
execuo
serial
T2
write(X)
read(Y)
execuo
no-serial
ou concorrente
Y = Y + 20
write(Y)
read(X)
X = X + 10
write(X)
read(X)
read(Y)
X = X + 10
Y = Y + 20
write(X)
write(Y)
42
14
12/09/2012
Scheduler
Responsvel pela definio de escalonamentos no-seriais de
transaes
Um escalonamento E define uma ordem de execuo das
operaes de vrias transaes, sendo que a ordem das
operaes de uma transao Tx em E aparece na mesma
ordem na qual elas ocorrem isoladamente em Tx
Problemas de um escalonamento no-serial mal definido
(invlido)
atualizao perdida (lost-update)
leitura suja (dirty-read)
43
Atualizao Perdida
Uma transao Ty grava em um dado atualizado por
uma transao Tx
T1
T2
read(X)
X = X 20
read(Z)
X = Z + 10
write(X)
read(Y)
write(X)
a atualizao de X
por T1 foi perdida!
Y = X + 30
write(Y)
44
Leitura Suja
Tx atualiza um dado X, outras transaes
posteriormente lem X, e depois Tx falha
T1
T2
read(X)
X = X 20
write(X)
read(X)
X = X + 10
write(X)
read(Y)
abort( )
45
15
12/09/2012
Scheduler
Deve evitar escalonamentos invlidos
exige anlise de operaes em conflito
operaes que pertencem a transaes diferentes
transaes acessam o mesmo dado
pelo menos uma das operaes write
write(X)
write(X)
read(X)
46
Scheduler X Recovery
Scheduler deve cooperar com o Recovery!
Categorias de escalonamentos considerando
o grau de cooperao com o Recovery
recuperveis X no-recuperveis
permitem aborto em cascata X evitam aborto em
cascata
estritos X no-estritos
47
Escalonamento Recupervel
Garante que, se Tx realizou commit, Tx no ir sofrer UNDO
o recovery espera sempre esse tipo de escalonamento!
T1
T2
X = X 20
X = X 20
write(X)
write(X)
read(X)
escalonamento
no-recupervel
X = X + 10
read(X)
escalonamento
recupervel
X = X + 10
write(X)
write(X)
commit( )
abort( )
T2
read(X)
read(X)
commit( )
commit(48)
16
12/09/2012
T1
T2
X = X 20
X = X 20
escalonamento
recupervel
com aborto em
cascata
write(X)
write(X)
read(X)
X = X + 10
write(X)
abort( )
T2
read(X)
read(X)
escalonamento commit( )
recupervel
sem aborto em
cascata
...
read(X)
X = X + 10
write(X)
...
49
Escalonamento Estrito
Garante que, se Tx deve sofrer UNDO, basta gravar a before image dos
dados atualizados por ela
Um escalonamento E recupervel, evita aborto em cascata e estrito se
uma Tx em E s puder ler ou atualizar um dado X depois que todas as
transaes que atualizaram X tenham sido concludas
T1
T1
T2
X = X 20
X = X 20
escalonamento
recupervel
sem aborto em
cascata e
no-estrito
T2
read(X)
read(X)
write(X)
write(X)
read(Y)
X = Y + 10
write(X)
commit( )
escalonamento
recupervel
sem aborto em
cascata e
estrito
commit( )
read(Y)
X = Y + 10
write(X)
commit( )
abort( )
50
Teoria da Serializabilidade
Garantia de escalonamentos no-seriais vlidos
Premissa
um escalonamento no-serial de um conjunto de transaes deve produzir
resultado equivalente a alguma execuo serial destas transaes
T1
entrada:
X = 50
Y = 40
T1
T2
entrada:
X = 50
Y = 40
read(X)
X = X 20
write(X)
read(Y)
execuo
serial Y = Y + 20
write(Y)
sada:
X = 40
Y = 60
X = X 20
write(X)
read(X)
execuo
no-serial
serializvel
read(X)
X = X + 10
write(X)
T2
read(X)
X = X + 10
write(X)
read(Y)
sada:
X = 40
Y = 60
Y = Y + 20
write(Y)
51
17
12/09/2012
Verificao de
Serializabilidade
Duas principais tcnicas
equivalncia de conflito
equivalncia de viso
Equivalncia de Conflito
dado um escalonamento no-serial E para um conjunto
de Transaes T, E serializvel em conflito se E for
equivalente em conflito a algum escalonamento serial E
para T, ou seja, a ordem de quaisquer 2 operaes em
conflito a mesma em E e E.
52
T2
escalonamento no-serial E1
T1
T2
escalonamento no-serial E2
T1
read(X)
read(X)
read(X)
X = X 20
X = X 20
X = X 20
write(X)
write(X)
read(X)
read(Y)
read(X)
Y = Y + 20
X = X + 10
write(X)
write(X)
read(Y)
write(Y)
T2
X = X + 10
read(X)
read(Y)
X = X + 10
Y = Y + 20
Y = Y + 20
write(X)
write(Y)
write(Y)
write(X)
E1 equivale em conflito a E
E2 no equivale em conflito a nenhum escalonamento serial
para T1 e T2
E1 serializvel e E2 no serializvel
53
Verificao de Equivalncia
em Conflito
Construo de um grafo direcionado de
precedncia
ns so IDs de transaes
arestas rotuladas so definidas entre 2 transaes
T1 e T2 se existirem operaes em conflito entre
elas
direo indica a ordem de precedncia da operao
origem indica onde ocorre primeiro a operao
18
12/09/2012
Verificao de Equivalncia
em Conflito
Algoritmo para teste de serialidade de um plano S
1.
2.
3.
4.
5.
Grafo de Precedncia
escalonamento serializvel E1
T1
escalonamento no-serializvel E2
T2
T1
read(X)
read(X)
X = X 20
X = X 20
T2
write(X)
read(X)
read(X)
X = X + 10
X = X + 10
write(X)
write(X)
read(Y)
read(Y)
write(X)
Y = Y + 20
Y = Y + 20
write(Y)
write(Y)
T1
T2
T1
T2
56
escalonamento no-serializvel E2
T1
T2
read(X)
X = X 20
Exemplo
HE2 = r1(x) r2(x) w1(x) r1(y)w2(x) w1(y) c1 c2
read(X)
X = X + 10
write(X)
read(Y)
write(X)
Y = Y + 20
write(Y)
commit( )
commit( )
57
19
12/09/2012
Referncias
Elmasri, R. e Navathe, S. Fundamentals of Database Systems,6
Edio, Addison-Wesley, 2011.
Captulo 21
58
Transao
Rodrigo Spnola
20