Proposição da Lista 1 - INF-Unioeste
Proposição da Lista 1 - INF-Unioeste
Proposição da Lista 1 - INF-Unioeste
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
BANCO DE DADOS II<br />
<strong>Lista</strong> 1<br />
(Transações e Controle de Concorrência)<br />
Professor Responsável: Clodis Boscarioli<br />
Série: 5ª Ano Letivo: 2008 Data de Proposição: 11/03/2008<br />
1-) Quais dos seguintes planos é serializável (por conflito)? Para ca<strong>da</strong> plano serializável,<br />
determine os planos seriais equivalentes.<br />
(a) r1 (X); r3 (X); w1(X); r2(X); w3(X)<br />
(b) r1 (X); r3 (X); w3(X); w1(X); r2(X)<br />
(c) r3 (X); r2 (X); w3(X); r1(X); w1(X)<br />
(d) r3 (X); r2 (X); r1(X); w3(X); w1(X)<br />
2-) Considere as três transações, T1, T2 e T3, e os planos S1 e S2 abaixo. Trace os grafos<br />
de precedência de seriali<strong>da</strong>de para S1 e S2 e diga se são serializáveis ou não. Se um plano<br />
for serializável, escreva o(s) plano(s) serial(is) equivalente(s).<br />
T1: r1(X); r1(Z); w1(X);<br />
T2: r2(Z); r2(Y); w2(Z); w2(Y);<br />
T3: r3(X); r3(Y); w3(Y);<br />
S1: r1(X); r2(Z); r1(Z); r3(X); r3(Y); w1(X); w3(Y); r2(Y); w2(Z); w2(Y);<br />
S2: r1(X); r2(Z); r3(X); r1(Z); r2(Y); r3(Y); w1(X); w2(Z); w3(Y); w2(Y);<br />
3) Quantos planos seriais existem para as três transações abaixo? Quais são? Qual o<br />
número total de planos possíveis?<br />
T1 T2 T3<br />
ler_item (X); ler_item (Z); ler_item (Y);<br />
escrever_item (X); ler_item (Y); ler_item (Z);<br />
ler_item(Y); escrever_item (Y); escrever_item (Y);<br />
escrever_item (Y); ler_item (X); escrever_item (Z);<br />
escrever_item (X);<br />
4-) Liste todos os planos possíveis para as transações T1 e T2 abaixo e determine quais são<br />
conflito serializáveis (correto) e quais não são.<br />
T 1 T 2<br />
ler_item (X);<br />
ler_item (X);<br />
X := X – N; X := X + M;<br />
escrever_item (X); escrever_item (X);<br />
ler_item (Y);<br />
Y := Y + N;<br />
escrever_item (Y);
5-) Defina transação no contexto de um banco de <strong>da</strong>dos. Qual a importância do<br />
gerenciamento de transações?<br />
6-) Uma transação quando executa<strong>da</strong> em um banco de <strong>da</strong>dos deve prover ao usuário<br />
transparência de concorrência e transparência de falha. Explique o que isto significa.<br />
7-) To<strong>da</strong> transação deve possuir quatro proprie<strong>da</strong>des desejáveis, não independentes entre<br />
si, que são ACID (Atomici<strong>da</strong>de, Consistência, Isolamento e Durabili<strong>da</strong>de). Explique ca<strong>da</strong><br />
uma delas.<br />
8-) Reescreva as transações abaixo utilizando as operações lock_item e unlock_item.<br />
Transação 1 Transação 2<br />
read_item (x)<br />
read_item (x)<br />
x = x – n<br />
x = x + m<br />
write_item (x)<br />
write_item (x)<br />
read_item (y)<br />
y = y + n<br />
write_item (y)<br />
9-) Explique sucintamente o protocolo two phase locking. Como ele garante serialização dos<br />
escalonamentos?<br />
10-) Considere as seguintes transações:<br />
T31: read (A);<br />
read (B);<br />
if A = 0 then B := B + 1;<br />
write (B);<br />
T32: read (B);<br />
read (A);<br />
if B = 0 then A := A + 1;<br />
write (A);<br />
Adicione instruções de bloqueio e desbloqueios às transações T31 e T32 de modo que<br />
observem o protocolo de bloqueio em duas fases. A execução dessas transações pode<br />
resultar em deadlock?<br />
11-) Quais os benefícios proporcionados pelo bloqueio em duas fases severo? Quais as<br />
desvantagens resultantes?<br />
12-) Quando uma transação é reverti<strong>da</strong> sob a ordenação de timestamp, ela recebe outro<br />
timestamp. Por que não simplesmente manter seu timestamp antigo?<br />
13-) Em bloqueio de granulari<strong>da</strong>de múltipla, qual a diferença entre bloqueios implícito e<br />
explícito?<br />
14-) Considere as seguintes transações defini<strong>da</strong>s em SQL. Ambas as transações alteram a<br />
tabela Banco (Conta, Saldo).
BEGIN TRANSACTION T1<br />
UPDATE Banco<br />
SET Saldo = ((SELECT Saldo FROM Banco WHERE Conta = 10) – 100)<br />
WHERE Conta = 10<br />
UPDATE Banco<br />
SET Saldo = ((SELECT Saldo FROM Banco WHERE Conta = 20) + 100)<br />
WHERE Conta = 20<br />
COMMIT TRANSACTION T1<br />
BEGIN TRANSACTION T2<br />
UPDATE Banco<br />
SET Saldo = ((SELECT Saldo FROM Banco WHERE Conta = 20) – 200)<br />
WHERE Conta = 20<br />
UPDATE Banco<br />
SET Saldo = ((SELECT Saldo FROM Banco WHERE Conta = 30) + 200)<br />
WHERE Conta = 30<br />
COMMIT TRANSACTION T2<br />
(a) As instruções de leitura e escrita de T1 são as seguintes:<br />
read(saldo_10)<br />
saldo_10 := saldo_10 – 100<br />
write(saldo_10)<br />
read(saldo_20)<br />
saldo_20 := saldo_20 + 100<br />
write(saldo_20)<br />
Seguindo o exemplo acima, obtenha as instruções de leitura e escrita dos <strong>da</strong>dos <strong>da</strong><br />
transação T2.<br />
(b) Defina uma escala de execução serializável de T1 e T2;<br />
(c) Proponha escalas de execução concorrente serializáveis usando os protocolos:<br />
(i) bloqueio em duas fases;<br />
(ii) timestamps;<br />
(d) Verifique se existe a possibili<strong>da</strong>de de deadlock ao executar T1 e T2 de modo<br />
concorrente.<br />
(e) Suponha uma nova transação T3 concorrente com T1 e T2 e mostre, através de uma<br />
escala de execução, que existe a possibili<strong>da</strong>de de deadlock ao usar o bloqueio em duas<br />
fases:<br />
BEGIN TRANSACTION T3<br />
UPDATE Banco<br />
SET Saldo = ((SELECT Saldo FROM Banco WHERE Conta = 30) – 200)<br />
WHERE Conta = 30<br />
UPDATE Banco<br />
SET Saldo = ((SELECT Saldo FROM Banco WHERE Conta = 10) + 200)<br />
WHERE Conta = 10<br />
COMMIT TRANSACTION T3
(f) Simule a execução <strong>da</strong> escala que você definiu no item (e) utilizando os seguintes<br />
esquemas de prevenção de deadlock:<br />
(i) esquema esperar-morrer; TS(T1) = 5, TS(T2) = 3 e TS(T3) = 8<br />
(ii) esquema ferir-esperar; TS(T1) = 3, TS(T2) = 2 e TS(T3) = 1<br />
15-) Mostre que há escalas de execução possíveis sob o protocolo de bloqueio em duas<br />
fases, mas não são possíveis sob o protocolo de timestamp e vice-versa.<br />
16-) Aplique o algoritmo de ordenação por timestamp para os planos de execução abaixo e<br />
determine se o algoritmo permitirá a execução desses planos.<br />
a-)<br />
Transação T1 Transação T2 Transação T3<br />
ler_item (Z)<br />
ler_item (Y)<br />
escrever_item (Y)<br />
ler_item (Y)<br />
Tempo<br />
ler_item (Z)<br />
ler_item (X)<br />
escrever_item (X)<br />
escrever_item (Y)<br />
escrever_item (Z)<br />
ler_item (X)<br />
ler_item (Y)<br />
escrever_item (Y)<br />
escrever_item (X)<br />
b-)<br />
Tempo<br />
Transação T1 Transação T2 Transação T3<br />
ler_item (Y)<br />
ler_item (Z)<br />
ler_item (X)<br />
escrever_item (X)<br />
escrever_item (Y)<br />
escrever_item (Z)<br />
ler_item (Z)<br />
ler_item (Y)<br />
escrever_item (Y)<br />
ler_item (Y)<br />
escrever_item (Y)<br />
ler_item (X)<br />
escrever_item (X)<br />
17-) Prove que o protocolo de bloqueio básico em duas fases garante a serialização de<br />
conflito do plano de execuções.<br />
(Indicação: mostre que, se um grafo de serialização para o plano de execução possui um<br />
ciclo, então pelo menos uma <strong>da</strong>s transações participantes no plano de execução não<br />
obedece ao protocolo de bloqueio em duas fases).