Você está na página 1de 20

12/09/2012

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

De forma abstrata e simplificada, uma transao pode ser


encarada como um conjunto de operaes de leitura e escrita
de dados
Tx read(x)
l o dado X do BD e o
armazena na varivel X
x=xi
read(y)
y=y*x
write(x)
grava no dado Y do BD o
write(y)
valor da varivel Y

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)

Item X tem um valor incorreto


pois sua atualizao atravs de T1
foi pedida

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)

A transao T1 falha e deve retornar


o valor de X para seu valor original
mas T2 j leu o valor incorreto

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)

T2 l X depois que ele subtrado


e l Y antes que seja adicionado.
O resultado ser uma soma
incorreta

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

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

12/09/2012

Transio de Estados de uma


Transao
reads e writes
Em processo de efetivao
iniciar
transao

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

Transio de Estados de uma


Transao
reads e writes
Em processo de efetivao
iniciar
transao

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

Transio de Estados de uma


Transao
reads e writes
Em processo de efetivao
iniciar
transao

Ativa

finalizar
transao

encerramento
sem sucesso
Efetivada

Entra nesse estado aps


transao deve
executar sua ltima operao
ser desfeita
(solicitao de COMMIT).
Neste momento, o SGBD precisa garantir
que as suas atualizaes sejam efetivadas
processo de aborto
com sucesso (no sofra Em
falhas).
Aplicao de tcnicas de recovery.

encerramento
com sucesso

concluso
da transao
sem sucesso

concluso
da transao
com sucesso

Concluda
21

12/09/2012

Transio de Estados de uma


Transao
reads e writes
Em processo de efetivao
iniciar
transao

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

Exemplos: gravao em Log,Em


descarga
de de aborto
processo
todos os buffers em disco .
concluso
da transao
sem sucesso

Concluda
22

Transio de Estados de uma


Transao
reads e writes
Em processo de efetivao
iniciar
transao

Ativa

finalizar
transao

encerramento
com sucesso

encerramento
sem sucesso
Efetivada

transao deve
ser desfeita

Entra nesse estado se no puder


concluso
prosseguir
a sua execuo.
transao
Pode passar da
para
esse estado enquanto
sucesso
ativa ou emcom
processo
de efetivao:
exemplo (I): violao de RI
Em processo de aborto
exemplo (II): pane no S.O.
concluso
Concluda
da transao
Suas aes j realizadas devem ser
sem sucesso
desfeitas (ROLLBACK). 23

Transio de Estados de uma


Transao
reads e writesEstado final de uma transao
Indica uma transao que deixa o
Em processo
de efetivao
sistema. As informaes
da transao
iniciar
transao

Ativa

mantidas em catlogo podem ser


excludas:finalizar
operaes feitas,
dados
encerramento
transao
manipulados,
buffers utilizados,
...
sem sucesso
Se a transao no concluiu com
transao deve
sucesso, ela pode ser reiniciada
ser desfeita
automaticamente

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

Responsabilidade do subsistema de controle de


concorrncia (scheduler) do SGBD
garantir escalonamentos sem interferncias

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

Responsabilidade do subsistema de recovery


refazer transaes que executaram com sucesso
em caso de falha no BD

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 - 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 a
transao 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 do
item T no banco de dados
[commit, T]: indica que a transao T foi completada com
sucesso 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 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

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
tc

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

Garantia de isolamento de Transaes


1a soluo: uma transao executa por vez
escalonamento serial de transaes
soluo bastante ineficiente!
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

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

T2 leu um valor de X que


no ser mais vlido!

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

tabela de situaes de conflito de transaes


podem gerar um estado inconsistente no BD
Ty
read(X)
Tx

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!

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

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

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 Tx


em E s puder ler dados que tenham sido atualizados por transaes que
j concluram
T1

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

Equivalncia de Conflito Exemplo


escalonamento serial E
T1

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

Um grafo com ciclos indica um escalonamento


no-serializvel em conflito!
54

18

12/09/2012

Verificao de Equivalncia
em Conflito
Algoritmo para teste de serialidade de um plano S
1.
2.

3.

4.

5.

Para cada transao Ti participante do Plano S, criar um n rotulado


Ti no grafo de precedncia.
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.
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.
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.
O plano S ser serializvel se, e apenas se, o grafo de precedncia
no contiver ciclos.
55

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

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)

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

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

20

Você também pode gostar