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:

  1. Lock a 2 fasi
    1. Una transazione dopo aver rilasciato un lock non può acquisirne altri (non protegge dell'aggiornamento fantasma)
  2. Lock a 2 fasi in senso stretto
    1. 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:

results matching ""

    No results matching ""