Salve a tutti,
Sono uno studente universitario di Informatica, in vista di un esame di Basi di Dati, sto provando ad eseguire una vecchia prova d'esame di cui non ho le soluzioni, in cui appare una domanda inattesa, ovvero questa:
2. Per il seguente schedule:
r1(A), r2(B), w1(A), c1, r2(A), r3(A), w2(B), w3(A), c3, w2(A), c2
nel quale con ci si indica il commit della transazione i:
(a) dire se ´e serializzabile rispetto ai conflitti;
(b) indicare, se esiste, la prima operazione che verrebbe messa in attesa nel caso di applicazione del protocollo 2PL;
(c) indicare, se esiste, la prima operazione che causa l’abort di una transazione nel caso di applicazione del protocollo basato su timestamp.
Io ho provato a risolverlo nel seguente modo, ma non avendo mai fatto nulla del genere prima penso sia completamente sbagliato, se qualcuno di voi ha la voglia e la cortesia di darmi una mano a a correggere i miei errori ve ne sarei grato
2) schedule:
r1(A),r2(B),w1(A),c1,r2(A),r3(A),w2(B),w3(A),c3,w2(A),c2
(a) Lo schedule non è serializzabile rispetto ai conflitti perchè presenta una perdita di
aggiornamento (lost update) presente in r2(A), r3(A), w3(A), c3, w2(A), c2, in quanto gli effetti della transizione t3 andrebbero persi.
(b) La prima operazione che verrebbe messa in attesa nel caso di applicazione del protocollo
2PL sarebbe sulla perdita di aggiornamento descritta nell'esercizio precedente, dunque l'applicazione del protocollo 2PL permetterebbe la corretta esecuzione delle transizioni eliminando il problema causato dal load update.
(si ci ho sparato non ci ho capito nulla di questo protocollo )
(c) Nel caso di applicazione del protocollo basato su timestamp sulle transizioni, la prima
operazione che causa l'abort di t2 sarebbe w2(A), perchè soddisfa la seguente politica:
? wt(x): se t < WTM(x) o t < RTM(x) la transizione viene uccisa.
Nel nostro caso avremmo: t=2, RTM(A)=3, WTM(A)=3, dunque 2 < 3 o 2 < 3, entrambe soddisfano la condizione quindi la transizione t2 viene uccisa.