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
read(X) X = X + 10 write(X)
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 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! T2
Leitura Suja
Tx atualiza um dado X, outras transaes posteriormente lem X, e depois Tx falha
T1 read(X) X = X 20 write(X) read(X) X = X + 10 write(X) read(Y) abort( ) T2 leu um valor de X que no ser mais vlido! T2
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
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!
garantia de Durabilidade!
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 read(X) X = X 20 write(X) read(X) X = X + 10 write(X) commit( ) abort( ) commit( ) commit( ) T2 T1 read(X) X = X 20 write(X) read(X) X = X + 10 write(X) T2
escalonamento no-recupervel
escalonamento recupervel
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
Evita dirty-read!
T1 read(X) X = X 20 write(X) read(X) X = X + 10 write(X) abort( ) ... T2 T1 read(X) X = X 20 write(X) T2
Escalonamento Estrito
Garante que, se Tx deve sofrer UNDO, basta gravar a before image dos dados atualizados por ela
UNDO(Tx) no interferir em atualizaes posteriores de outras transaes
Evita lost-update!
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 read(X) X = X 20 write(X) read(Y) X = Y + 10 write(X) commit( ) abort( ) T2 T1 read(X) X = X 20 write(X) T2
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 execuo read(Y) serial
T2
entrada: T1 X = 50 read(X) Y = 40
T2
X = X 20 read(X) X = X + 10 write(X)
sada: X = 40 Y = 60
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.
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 read(X) X = X 20 write(X) read(X) X = X + 10 write(X) read(Y) Y = Y + 20 write(Y) Y = Y + 20 write(Y) write(X) read(Y) write(X) T2
escalonamento no-serializvel E2
T1 read(X) X = X 20 read(X) X = X + 10 T2
T1
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 read(X) X = X 20 read(X) X = X + 10 write(X) read(Y) write(X) Y = Y + 20 write(Y) commit( ) commit( ) T2
Exemplo
HE2 = r1(x) r2(x) w1(x) w2(x) w1(y) c1 c2
Exerccio 1
1. Dadas as transaes abaixo, associe corretamente a histria com o tipo de escalonamento (SR, R, SAC, E, S) T1 = w(x) w(y) w(z) c1 T2 = r(u) w(x) r(y) w(y) c2 ( ( ( ( ( ) ) ) ) )
HE1 = w1(x) w1(y) r2(u) w2(x) r2(y) w2(y) c2 w1(z) c1 HE2 = w1(x) w1(y) w1(z) c1 r2(u) w2(x) r2(y) w2(y) c2 HE3 = w1(x) w1(y) r2(u) w2(x) w1(z) c1 r2(y) w2(y) c2 HE4 = w1(x) w1(y) r2(u) w1(z) c1 w2(x) r2(y) w2(y) c2 HE5 = w1(x) w1(y) r2(u) w2(x) r2(y) w2(y) w1(z) c1 c2 2. Dadas as transaes ao lado, d um exemplo de uma histria no-serial: a) no-serializvel b) serializvel e no-recupervel c) sem aborto em cascata
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.
10
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
11
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
logo, a serializabilidade garantida atravs de tcnicas (ou protocolos) de controle de concorrncia que no precisam testar os escalonamentos
12