14.03.2015 Views

Proposição da Lista 1 - INF-Unioeste

Proposição da Lista 1 - INF-Unioeste

Proposição da Lista 1 - INF-Unioeste

SHOW MORE
SHOW LESS

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).

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!