[Basi di dati] Scheduler delle transazioni, esercizio

starsuper
Ho questo esercizio, so fare tutti i punti tranne il terzo ma visto che la veridicità di questo mi conferma tutti gli altri punti vorrei partire da qui.



Dalle soluzioni capisco che non è 2pl, qualche anima pia che mi spiega il perche? Grazie!

Risposte
BoG3
Edit: ho corretto il post:

Ciao,
proviamo così:
dove $s_3(K)$ = Transazione 3 prende K in lock shared, mentre $x_3(K)$ = modalita' esclusiva.
Per essere in 2pl deve rispondere al requisito che ogni unlock di una transazione avvenga dopo tutti gli lock di quella transazione, ossia: non posso cominciare a sbloccare risorse senza prima essermele accaparrate tutte.


$s_3(z); r_3(z); $ Transazione 3 prende shared lock su $z$
$s_1(z); r_1(z); $ Tr. 1 prende shared lock su $z$ (2 shared lock sono compattibili)
$x_2(y); w_2(y); $ Tr. 2 prende exclusive lock su $y$ ($y$ era libero)
$x_4(x); w_4(x);$ Tr. 4 ha terminato ma non puo' rilasciare le risorse che aveva: $x$.
$x_3(z); w_3(z);$ Bloccata in attesa! Tr. 3 deve aspettare la fine della transazione 1 per avere $z$ tutto per se
$x_3(y); w_3(y);$ Tr. 3 è ancora bloccata!
$s_1(x); r_1(x);$ Tr. 1 cerca di prende in shared lock $x$ ma non è ancora stato rilasciato da Tr. 4 e quindi viene bloccata in attesa
$x_2(x); w_2(x);$ come sopra...
-> Deadlock!!

Se tr. 4 avesse potuto rilasciare $X$ subito dopo averlo scritto non ci sarebbero stati problemi ma il 2PL prevede che le transazioni devono attraversare 2 fasi: 1) Accrescimento: tutte le transazioni cercano di ottenere tutti i lock di cui hanno bisogno e 2) Decrescimento: rilasciano tutti i locks. Questo vuol dire che Tr 4 non puo' rilasciare $X$ finchè ci sono altre transaazioni che devono ancora ottenere un lock su qualche risorsa.

Spero sia corretto. Sto preparando anche io l'esame di Sistemi informativi :D

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.