Escolar Documentos
Profissional Documentos
Cultura Documentos
1 Processamento de Consultas
2 Introduo a Transaes
3 Recuperao de Falhas
4 Controle de Concorrncia
5 SQL Embutida
6 Banco de Dados Distribudo
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 write(X)
no-serial
ou concorrente
execuo
read(Y)
serial
Y = Y + 20
write(Y)
T2
read(X)
X = X + 10
write(X)
read(X)
read(Y)
X = X + 10
Y = Y + 20
write(X)
write(Y)
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)
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)
Y = X + 30
write(Y)
a atualizao de X
por T1 foi perdida!
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( )
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
read(X)
write(X)
write(X)
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
Escalonamento Recupervel
Garante que, se Tx realizou commit, Tx no ir sofrer
UNDO
o recovery espera sempre esse tipo de escalonamento!
escalonamento
no-recupervel
T2
T1
read(X)
read(X)
X = X 20
X = X 20
write(X)
write(X)
read(X)
X = X + 10
escalonamento
recupervel
read(X)
X = X + 10
write(X)
commit( )
abort( )
T2
write(X)
commit( )
commit( )
escalonamento
recupervel
com aborto em
cascata
T2
T1
read(X)
read(X)
X = X 20
X = X 20
write(X)
write(X)
read(X)
X = X + 10
write(X)
abort( )
...
escalonamento
commit( )
recupervel
sem aborto em
cascata
T2
read(X)
X = X + 10
write(X)
...
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
escalonamento
recupervel
sem aborto em
cascata e
no-estrito
T2
T1
read(X)
read(X)
X = X 20
X = X 20
write(X)
write(X)
read(Y)
X = Y + 10
write(X)
commit( )
abort( )
escalonamento
commit( )
recupervel
sem aborto em
cascata e
estrito
T2
read(Y)
X = Y + 10
write(X)
commit( )
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
entrada:
T1
X = 50 read(X)
Y = 40
T2
entrada:
T1
X = 50 read(X)
Y = 40
X = X 20
X = X 20
execuo write(X)
no-serial
serializvel
write(X)
execuo
read(Y)
serial
Y = Y + 20
read(X)
X = X + 10
write(X)
write(Y)
sada:
X = 40
Y = 60
T2
read(X)
X = X + 10
write(X)
read(Y)
sada:
X = 40 Y = Y + 20
Y = 60 write(Y)
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.
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)
T2
read(X)
read(Y)
read(X)
Y = Y + 20
X = X + 10
write(X)
write(Y)
write(X)
read(Y)
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
Grafo de Precedncia
escalonamento serializvel E1
T1
T2
escalonamento no-serializvel E2
T1
read(X)
read(X)
X = X 20
X = X 20
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
T2
T1
T2
E
SAC
R
SR
Histria
Representao seqencial da execuo
entrelaada de um conjunto de transaes
escalonamento no-serializvel E2
concorrentes
operaes consideradas
read (r), write (w),
commit (c), abort (a)
T1
T2
read(X)
X = X 20
read(X)
X = X + 10
Exemplo
write(X)
read(Y)
write(X)
Y = Y + 20
write(Y)
commit( )
commit( )
Exerccios 1
1.
T1 read(X)
X = X + 10
write(X)
Y = Y + 20
write(Y)
T2 read(X)
Y = X + 10
write(Y)
T3 read(X)
X=X*2
write(X)
Equivalncia de Viso
dado um escalonamento no-serial E para um
conjunto de Transaes T, E serializvel em
viso se E for equivalente em viso a algum
escalonamento serial E para T, ou seja:
para toda operao read(X) de uma Tx em E, se X
lido aps um write(X) de uma Ty em E (ou originalmente
lido do BD), ento essa mesma seqncia deve ocorrer
em E;
se uma operao write(X) de uma Tk for a ltima
operao a atualizar X em E, ento Tk tambm deve
ser a ltima transao a atualizar X em E.
Serializabilidade de Viso
Idia bsica
enquanto cada read(X) de uma Tx ler o resultado de
uma mesmo write(X) em E e E, em ambos os
escalonamentos, Tx tem a mesma viso do resultado
se o ltimo write(X) feito pela mesma transao em E
e E, ento o estado final do BD ser o mesmo em
ambos os escalonamentos
Exemplo
Hserial = r1(X) w1(X) c1 w2(X) c2 w3(X) c3
Hexemplo = r1(X) w2(X) w1(X) w3(X) c1 c2 c3
Hexemplo no serializvel em conflito, mas serializvel
em viso
Verificao de Serializabilidade
Tcnicas propostas (em conflito e de viso) so
difceis de serem testadas
exige que se tenha um conjunto fechado de
transaes para fins de verificao
Na prtica
conjunto de transaes executando
concorrentemente muito dinmico!
novas transaes esto sendo constantemente
submetidas ao SGBD para execuo