Accessi Concorrenti al DBMS
Quando più client si conenettono ad DBMS si possono verificare situazioni spiacevoli
- Lost Update (aggiornamento perso): due persone, in due agenzie diverse, comprano entrambe l’ultimo biglietto per il concerto degli U2 a Roma
- Dirty Read (lettura sporca): nel programma dei concerti degli U2 figura una tappa a Bologna il 15/07/10, ma quando provate a comprare un biglietto per quella data vi viene detto che in realtà non è ancora stata fissata
- Unrepeatable Read (lettura irripetibile): per il concerto degli U2 (finalmente la data è stata fissata!) vedete che il prezzo è di 40 €, ci pensate su 5 minuti, ma il prezzo nel frattempo è salito a 50 €
- Phantom Row (aggiornamento fantasma): volete comprare i biglietti di tutte e due le tappe degli U2 in Italia, ma quando comprate i biglietti scoprite che le tappe sono diventate 3.
Per risolvere questi problemi si può usare:
- Lock a 2 fasi
- Una transazione dopo aver rilasciato un lock non può acquisirne altri (non protegge dell'aggiornamento fantasma)
- Lock a 2 fasi in senso stretto
- Una transazione dopo aver rilasciato un lock non può acquisirne altri ed inoltre i lock possono essere rilasciati solo dopo una fase di commit o rollback
Per gestire il Deadlock (Stallo) si può usare: