7/26/2019 BD - Aula 5 - Transao
1/20
12/09/201
Transao
Rodrigo Spnola
Agenda
Definies iniciais
Controle de Concorrncia
Estados de uma Transao
Propriedades de uma Transao
Log de Transaes
Controle de Concorrncia
2
DEFINIES INICIAIS
3
7/26/2019 BD - Aula 5 - Transao
2/20
12/09/201
TransaesAlgumas
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 Redundnciagarantir que qualquer
pedao da informao possa ser reconstitudo a partir de
outras informaes armazenadas
4
TransaesAlgumas
Definies
Para garantir o processamento de vrias
transaes necessrio o controle de
concorrncia
Necessrio tambm mecanismo de
recuperao para problemas de falhas de
transao.
5
TransaesAlgumas
Definies
Unidade lgica de processamento em um SGBD
Composta de uma ou mais operaes
seus limites podem ser determinados em SQL
De forma abstrata e simplificada, uma transao pode ser
encarada como um conjunto de operaes de leitura e escrita
de dados
read(x)
x = xi
read(y)
y = y * x
write(x)
write(y)
Tx l o dado X do BD e oarmazena na varivel X
grava no dado Y do BD o
valor da varivel Y6
7/26/2019 BD - Aula 5 - Transao
3/20
12/09/201
TransaesAlgumas
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)
A BPrograma 1
Memria
A
BPrograma 2
Memria
A
B
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
9
7/26/2019 BD - Aula 5 - Transao
4/20
12/09/201
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
Read (X)X = X - N
Write (X)Read (Y)
Y = Y + N
Write (Y)
Read (X)
X = X + M
Write (X)
T1 T2
tempo
Problema da perda de atualizao
Item Xtem um valor incorretopois sua atualizao atravs de T1
foi pedida
12
7/26/2019 BD - Aula 5 - Transao
5/20
12/09/201
Transaes - Controle de
concorrncia
Dependncia de uma atualizao no confirmada(Leitura de sujeiradirty read)
Read (X)X = X - NWrite (X)
Read (X)X = X + MWrite (X)
T1 T2
Read (Y)
tempo
FALHAA transao T1 falha e deve retornar
o valor de Xpara seu valor originalmas T2 j leu o valor incorreto
13
Transaes - Controle de
concorrncia
tempo
Read (X)
X = X - N
Write (X)
Sum = 0
Read (A)
Sum = Sum + A
T1 T2
Read (Y)
Y = Y + N
Write (Y)
Read (X)
Sum = Sum + X
Read (Y)
Sum = Sum + Y
Problema do sumrio incorreto
T2l Xdepois que ele subtradoe l Yantes que seja adicionado.
O resultado ser uma soma
incorreta
14
Transaes - Controle de
concorrncia
Begin Transaction:inicia a transao de formaexplcita
Commit Transaction:encerra a transao comsucesso e torna a atualizao permanente
Rollback Transaction: Trmino de transaocom erro, retorna o banco para posio
anterior transao
15
7/26/2019 BD - Aula 5 - Transao
6/20
12/09/201
Transaes - Recuperao
Se todas as operaes na transao so completadas
com sucessotem efeito permanente no banco de
dados
Se uma operao falharnada 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
ESTADOS DE UMA TRANSAO
17
Estados de uma Transao
Uma transao sempre monitorada pelo SGBD
quanto ao seu estado
que operaes j fez? concluiu suas operaes? deve
abortar?
Estados de uma transao
Ativa, Em processo de efetivao, Efetivada, Em processo
de aborto, Concluda
Respeita um Grafo de Transio de Estados
18
7/26/2019 BD - Aula 5 - Transao
7/20
12/09/201
Transio de Estados de uma
Transao
Ativa
Em processo de efetivao
Efetivada
Em processo de aborto
Concluda
iniciartransao
finalizar
transao
transao deve
ser desfeita
concluso
da transao
com sucesso
encerramento
com sucesso
concluso
da transao
sem sucesso
readse writes
encerramento
sem sucesso
19
Transio de Estados de uma
Transao
Ativa
Em processo de efetivao
Efetivada
Em processo de aborto
Concluda
iniciar
transaofinalizar
transao
transao deve
ser desfeita
concluso
da transao
com sucesso
encerramento
com sucesso
concluso
da transao
sem sucesso
readse writes
encerramento
sem sucesso
Estado inicial de toda
transao selecionada
para execuo.
Enquanto ativa, uma transao executa
uma ou mais operaes read e write
20
Transio de Estados de uma
Transao
Ativa
Em processo de efetivao
Efetivada
Em processo de aborto
Concluda
iniciar
transaofinalizar
transao
transao deve
ser desfeita
concluso
da transao
com sucesso
encerramento
com sucesso
concluso
da transao
sem sucesso
readse writes
encerramento
sem sucesso
Entra nesse estado aps
executar sua ltima operao
(solicitao de COMMIT).
Neste momento, o SGBD precisa garantir
que as suas atualizaes sejam efetivadas
com sucesso (no sofra falhas).
Aplicao de tcnicas de recovery.
21
7/26/2019 BD - Aula 5 - Transao
8/20
12/09/201
Transio de Estados de uma
Transao
Ativa
Em processo de efetivao
Efetivada
Em processo de aborto
Concluda
iniciartransao
finalizar
transao
transao deve
ser desfeita
concluso
da transao
com sucesso
encerramento
com sucesso
concluso
da transao
sem sucesso
readse writes
encerramento
sem sucesso
Entra nesse estado aps o SGBD confirmar
que todas as modificaes da transao
esto garantidas no BD (COMMIT OK).
Exemplos: gravao em Log, descarga de
todos os buffers em disco .
22
Transio de Estados de uma
Transao
Ativa
Em processo de efetivao
Efetivada
Em processo de aborto
Concluda
iniciar
transaofinalizar
transao
transao deve
ser desfeita
concluso
da transao
com sucesso
encerramento
com sucesso
concluso
da transao
sem sucesso
readse writes
encerramento
sem sucesso
Entra nesse estado se no puder
prosseguir a sua execuo.
Pode passar para esse estado enquanto
ativa ou em processo de efetivao:
exemplo (I): violao de RIexemplo (II): pane no S.O.
Suas aes j realizadas devem ser
desfeitas (ROLLBACK).23
Transio de Estados de uma
Transao
Ativa
Em processo de efetivao
Efetivada
Em processo de aborto
Concluda
iniciar
transaofinalizar
transao
transao deve
ser desfeita
concluso
da transao
com sucesso
encerramento
com sucesso
concluso
da transao
sem sucesso
readse writes
encerramento
sem sucesso
Estado final de uma transao
Indica uma transao que deixa osistema. As informaes da transao
mantidas em catlogo podem ser
excludas: operaes feitas, dados
manipulados, buffers utilizados, ...
Se a transao no concluiu com
sucesso, ela pode ser reiniciada
automaticamente
24
7/26/2019 BD - Aula 5 - Transao
9/20
12/09/201
PROPRIEDADES DE UMATRANSAO
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
7/26/2019 BD - Aula 5 - Transao
10/20
12/09/201
1
Consistncia
Uma transao sempreconduz o BD de umestado 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 devefuncionar como se Tx executasse de forma isolada Tx no deve sofrer interferncias de outras transaes
executando concorrentemente
Responsabilidade do subsistema de controle de
concorrncia (scheduler) do SGBD
garantir escalonamentos sem interferncias
29
Isolamento
T1 T2
read(A)
A = A50
write(A)
read(A)
A = A+A*0.1
write(A)
read(B)
B = B + 50
write(B)
read(B)
B = B - A
write(B)
T1 T2
read(A)
A = A50
read(A)
A = A+A*0.1
write(A)
read(B)
write(A)
read(B)
B = B + 50
write(B)
B = B - A
write(B)
escalonamento vlido escalonamento invlido
T1interfere
em T2
T2interfere
em T130
7/26/2019 BD - Aula 5 - Transao
11/20
12/09/201
Durabilidade ou Persistncia
Deve-se garantir que as modificaesrealizadas por uma transao que concluiu
com sucesso persistam no BD nenhuma falha posterior ocorrida no BD deve
perder essas modificaes
Responsabilidade do subsistema de recovery
refazer transaes que executaram com sucesso
em caso de falha no BD
31
Transaes - Propriedades
(ACID)
Atomicidade
Consistncia
Isolamento
Durabilidade
Subsistema
de
Recuperao
Controle de
Concorrncia
Restries de
Integridade/
Programador
32
LOG DE TRANSAES
33
7/26/2019 BD - Aula 5 - Transao
12/20
12/09/201
1
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 - Registros de Log
Seja T a idenficao de uma transao:
[Start_transaction, T]:marca o incio da transao T
[Write_item, T, X, old_value, new_value]:indica que atransao T alterou o valor de X no banco de dados do
valor antigo para o novo
[read_item, T, X]:indica que a transao T leu o valor doitem T no banco de dados
[commit, T]: indica que a transao T foi completada comsucesso e confirma a gravao no banco de dados
[abort, T]:indica que a transaa T foi abortada
35
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 recuperaoRecovery
36
7/26/2019 BD - Aula 5 - Transao
13/20
12/09/201
1
Transaes - Modificaes no
BD
Modificaes Adiadas:O BD no atualizadoat que a transao alcance o commit.
Modificaes Imediata:O BD modificadoantes de alcanar o commit. As informaes
do log so gravadas no meio estvel a fim de
possibilitar a recuperao.
37
Transaes - Check point
Ponto de checagem
Gravado periodicamente no log no ponto em que o SGBD
grava no banco de dados todos os blocos que tenham sido
modificados
Todas as transaes commited no log no precisam mais
ser refeitas no banco
O gerenciador de recuperaes deve decidir em que
intervalo realizar o checkpoint
O intervalo pode ser mantido em termo de tempo ou em
termo de nmero de transaes confirmadas desde o
ltimo checkpoint
38
Transaes - Check point
Suspende todas as transaes temporariamente.
Grava os buffers modificados do BD da memria para o disco.
Grava um registro de checkpoint no log
Retorna as transaes em execuo
T1
T2
T3
T4
T5
Ponto de checagem
(tempo, tc)
Falha no sistem
(tempo, tc)
Tempo
tc tf
39
7/26/2019 BD - Aula 5 - Transao
14/20
12/09/201
1
CONTROLE DE CONCORRNCIA
40
Controle de Concorrncia
SGBD
sistema multiusurio em geral
diversas transaes executando simultaneamente
Garantia de isolamento de Transaes
1a soluo: uma transao executa por vez
escalonamento serial de t ransaes
soluo bastanteineficiente!
vrias transaes podem esperar muito tempo para serem
executadas
CPU pode ficar muito tempo ociosa enquanto uma transao faz I/O, por exemplo, outras
transaes poderiam ser executadas
41
Controle de Concorrncia
Soluo mais eficiente
execuo concorrente de transaes de modo a preservar o isolamento escalonamento (schedule) no-serial e ntegro
responsabilidade do subsistema de controle de concorrncia ou scheduler
T1 T2
read(X)
X = X20
write(X)
read(Y)
Y = Y + 20
write(Y)
read(X)
X = X + 10
write(X)
T1
T2
read(X)
X = X20
write(X)
read(X)
X = X + 10
write(X)
read(Y)
Y = Y + 20
write(Y)
execuoserial
execuono-serial
ou concorrente
42
7/26/2019 BD - Aula 5 - Transao
15/20
12/09/201
1
Scheduler
Responsvel pela definio de escalonamentos no-seriais de
transaes
Um escalonamento E define uma ordem de execuo dasoperaes de vrias transaes, sendo que a ordem dasoperaes de uma transao Tx em E aparece na mesmaordem 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 = X20
read(Z)
X = Z + 10
write(X)
read(Y)
write(X)
Y = X + 30
write(Y)
a atualizao de Xpor T1 foi perdida!
44
Leitura Suja
Tx atualiza um dado X, outras transaes
posteriormente lem X, e depois Tx falha
T1 T2
read(X)
X = X20
write(X)
read(X)
X = X + 10
write(X)
read(Y)
abort( )
T2 leu um valor de X que
no ser mais vlido!
45
7/26/2019 BD - Aula 5 - Transao
16/20
12/09/201
1
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
tabela de situaes de conflito de transaes
podem gerar um estado inconsistente no BD
Ty
Tx
read(X) write(X)
read(X)
write(X)46
Scheduler X Recovery
Scheduler deve cooperar com o Recovery!
Categorias de escalonamentos considerandoo grau de cooperao com o Recovery
recuperveisX no-recuperveis
permitem aborto em cascata X evitam aborto emcascata
estritosX no-estritos
47
Escalonamento Recupervel
Garante que, se Tx realizou commit, Tx no ir sofrer UNDO
o recovery espera sempre esse tipo de escalonamento!
Um escalonamento E recupervel se nenhuma Tx em E for
concluda at que todas as transaes que gravaram dados
lidos por Tx tenham sido concludas
T1 T2
read(X)
X = X20
write(X)
read(X)
X = X + 10
write(X)
commit( )
abort( )
escalonamentono-recupervel
T1 T2
read(X)
X = X20
write(X)
read(X)
X = X + 10
write(X)
commit( )
commit( )
escalonamentorecupervel
48
7/26/2019 BD - Aula 5 - Transao
17/20
12/09/201
1
Escalonamento sem Aborto
em Cascata
Um escalonamento recupervel pode gerar abortos de transaes em
cascata
consome muito tempo de recovery!
Um escalonamento E recupervel e evita aborto em cascata se uma Txem E s puder ler dados que tenham sido atualizados por transaes que
j concluram
T1
T2
read(X)
X = X20
write(X)
read(X)
X = X + 10
write(X)
abort( ) . . .
escalonamento
recupervel
com aborto emcascata
T1 T2
read(X)
X = X20
write(X)
commit( )
read(X)
X = X + 10
write(X)
. . .
escalonamento
recupervel
sem aborto emcascata
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 T2
read(X)
X = X20
write(X)
read(Y)
X = Y + 10
write(X)
commit( )
abort( )
escalonamento
recupervel
sem aborto emcascata e
no-estrito
T1 T2
read(X)
X = X20
write(X)
commit( )
read(Y)
X = Y + 10
write(X)
commit( )
escalonamento
recupervel
sem aborto em
cascata e
estrito
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 T2
read(X)
X = X20
write(X)
read(Y)
Y = Y + 20
write(Y)
read(X)
X = X + 10
write(X)
T1 T2
read(X)
X = X20
write(X)
read(X)
X = X + 10
write(X)
read(Y)
Y = Y + 20
write(Y)
execuoserial
execuono-serial
serializvel
entrada:X = 50Y = 40
entrada:X = 50Y = 40
sada:X = 40Y = 60
sada:X = 40Y = 60
51
7/26/2019 BD - Aula 5 - Transao
18/20
12/09/201
1
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 forequivalente em conflito a algum escalonamento serial Epara T, ou seja,a ordem de quaisquer 2 operaes emconflito a mesma em E e E.
52
Equivalncia de Conflito -
Exemplo
T1 T2
read(X)
X = X20
write(X)
read(Y)
Y = Y + 20
write(Y)
read(X)
X = X + 10
write(X)
T1
T2
read(X)
X = X20
write(X)
read(X)
X = X + 10
write(X)
read(Y)
Y = Y + 20
write(Y)
escalonamento serial E escalonamento no-serial E1
T1 T2
read(X)
X = X20
read(X)
X = X + 10
write(X)
read(Y)
write(X)
Y = Y + 20
write(Y)
escalonamento no-serial E2
E1equivale em conflito a E
E2no equivale em conflito a nenhum escalonamento serial
para T1 e T2
E1 serializvel e E2no 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
Um grafo com ciclos indica um escalonamento
no-serializvel em conflito!54
7/26/2019 BD - Aula 5 - Transao
19/20
12/09/201
1
Verificao de Equivalncia
em Conflito
Algoritmo para teste de serialidade de um plano S
1. Para cada transao Ti participante do Plano S, criar um n rotulado
Ti no grafo de precedncia.
2. Para cada caso em S em que Tj executar um ler_item(X) depois que
uma Ti executar um escrever_item(X), criar uma seta (Ti Tj ) no
grafo de precedncia.
3. Para cada caso em S em que Tj executar um escrever_item(X) depois
que Ti executar um ler_item(X), criar uma seta (Ti Tj ) no grafo de
precedncia.
4. Para cada caso em S em que Tj executar um escrever_item(X) depois
que Ti executar um escrever_item(X), criar uma seta (Ti Tj ) no
grafo de precedncia.
5. O plano S ser serializvel se, e apenas se, o grafo de precedncia
no contiver ciclos.
55
Grafo de Precedncia
T1 T2
read(X)
X = X20
write(X)
read(X)
X = X + 10
write(X)
read(Y)
Y = Y + 20
write(Y)
escalonamento serializvel E1
T1 T2
read(X)
X = X20
read(X)
X = X + 10
write(X)
read(Y)
write(X)
Y = Y + 20
write(Y)
escalonamento no-serializvel E2
T1 T2 T1 T2
56
Plano de Execuo (histrico)
de Transaes
Representao sequencial da execuo entrelaada de um conjunto de
transaes concorrentes operaes consideradas
read (r), write (w),
commit (c), abort (a)
Exemplo
HE2 = r1(x) r2(x) w1(x) r1(y)w2(x) w1(y) c1 c2
escalonamento no-serializvel E2
T1 T2
read(X)
X = X20
read(X)
X = X + 10
write(X)
read(Y)
write(X)
Y = Y + 20
write(Y)
commit( )
commit( )57
7/26/2019 BD - Aula 5 - Transao
20/20
12/09/201
Referncias
Elmasri, R. e Navathe, S. Fundamentals of Database Systems,6
Edio, Addison-Wesley, 2011.
Captulo 21
Abraham Silberschatz, Henry F. Korth, S. Sudarshan., Sistema
de Banco de Dados, Editora: CAMPUS 5 Edio - 2006 808
pg. ISBN 13: 9788535211078
58
Transao
Rodrigo Spnola
Top Related