Salve ragazzi![]()
Ho un piccolo problema a capire un concetto teorico e che purtroppo avrò nell'esame di basi di dati, perciò vorrei avere una delucidazione, e cosa accade in alcuni casi specifici:
Utilizzando il protocollo 2PL(locking a due fasi)
Le operazioni di una transazione devono essere lockate per risorsa, e per ogni risorsa il read_lock può essere condiviso, ma il write_lock può essere solo esclusivo, quindi nel caso in cui io avessi lo schedule seguente:
S: {ReadT1(X),ReadT2(X),ReadT1(X),WriteT1(X)}
Posso scrivere come ordine:
Transazione 1 Transazione 2 Read_lock X unlock X * Read_lock X unlock X Read_lock X unlock X Write_lock X unlock X
* l'unlock è giusto lì? o essendo che le risorse in letture possono essere condivise posso mettere l'unlock sul read alla 5° riga direttamente?
Per quel che riguarda invece il 2PL stretto, che quindi ha la restrizione riguardo al locking liberato solo dopo il commit cosa succede prendendo come esempio lo stesso schedule sopra? Le transazioni si concludono o averanno un deadlock o un'arresto anomalo?
Grazie per le possibili risposte, buona serata![]()

Rispondi quotando
