Banco de Dados Distribuídos
Por: Lucas_Mtss • 18/6/2021 • Trabalho acadêmico • 1.029 Palavras (5 Páginas) • 125 Visualizações
[pic 1][pic 2][pic 3]
1) Quando duas operações no SGBD podem entrar em conflito?
Quando duas operações que pertencem a diferentes transações concorrentes acessarem o mesmo item de dado e pelo menos uma delas for uma gravação.
2) Qual o problema que ocorre durante a execução das transações abaixo?
T1 T2
Read_item(X);
X:= X+1;
Write_item(X);
read_item(X);
X:= X+2;
Read_item(Y) ....
Erro na transação (executar roolback)
Problema de inconsistência causado por uma atualização temporária, por não estar de acordo com o princípio de isolamento (T2 está tendo acesso a valores temporários de T1). Como T1 é abortada, T2 fica com um valor de X inconsistente.
3) Baseado no seguinte esquema de execução de transações, responda os itens subsequentes:
a) O que você entende por escalonamento serializável?
Quando as transações escalonadas podem ser executadas concorrentemente, apresentando resultados idênticos aos obtidos por suas execuções seriais.
b) Construa um grafo de precedência para o escalonamento descrito acima.
[pic 4]
[pic 5]
c) Este esquema representa um escalonamento serializável? Justifique.
Não, pois existe um ciclo entre as transações T1 e T2.
4) Considere os seguintes logs:
a) R1(A); R2(A); R3(B); W1(A); R2(C); R2(B); W2(B); W1(C);
b) R1(A); W1(A); R2(A); W2(C); R3(C); W3(A);
c) W3(A); R1(A); W1(B); R2(B); W2(C); R3(C);
Para cada um deles:
A. Construa o grafo da relação de precedência.
a)
[pic 6]
T1 | T2 | T3 |
Read(A) | ||
Read(A) | [pic 7] | |
Read (B) | ||
Write(A) | ||
Read(C) | ||
Read(B) | ||
Write(B) | ||
Write(C) |
b) [pic 8]
T1 | T2 | T3[pic 9] |
Read(A) | ||
Write(A) | ||
Read(A) | ||
Write(C) | ||
Read(C)[pic 10] | ||
Write(A) |
c)
T1 | T2 | T3 |
Write(A)[pic 11][pic 12][pic 13] | ||
Read(A) | ||
Write(B) | ||
Read(B) | ||
Write(C) | ||
Read(C) |
B. Quais logs são serializáveis. Caso afirmativo, qual o log serial equivalente?
A, B (inclusive B é serial) são serializáveis, pois não possuem ciclos.
Logs seriais equivalentes:
- R1(A); W1(A); W1(C), R2(A); R2(C); R2(B); W2(B); R3(B)
<T1, start>
<T1, Read, A>
<T1, Write, A>
<T1, Write, C>
<T1, commit>
<T2, start>
<T2, Read, A>
<T2, Read, C>
<T2, Read, B>
<T2, Write, B>
<T2, commit>
<T3, start>
<T3, Read, B>
<T3, commit>
b) O escalonamento B já é serial.
R1(A); W1(A); R2(A); W2(C); R3(C); W3(A)
<T1, start>
<T1, Read, A>
<T1, Write, A>
<T1, commit>
<T2, start>
<T2, Read, A>
<T2, Write, C>
<T2, commit>
<T3, start>
<T3, Read, C>
<T3, Write, A>
<T3, commit>
5) Protocolos de Controle de Concorrência
O escalonador é responsável por estabelecer a ordem em que as operações de transações concorrentes são executadas. Essa ordem é fundamental e garante a integridade do bd em sistemas de multiusuários. O bloqueio, o timestamp e os métodos otimistas são alguns dos protocolos utilizados pelo escalonador para garantir a serialização de transações.
...