Oracle
 sql >> Database >  >> RDS >> Oracle

Potrebbe esserci un deadlock quando si utilizza il blocco ottimistico?

Temo che tu debba essere molto preciso nella tua definizione di controllo ottimistico della concorrenza. Nella definizione classica di Bernstein, Goodman e Hadzilacos, il controllo della concorrenza ottimistica consente ai thread di acquisire "virtualmente" i blocchi, procedere con gli aggiornamenti e quindi verificare la violazione della coerenza quando la transazione tenta di eseguire il commit. Se si verifica una violazione di coerenza, la transazione viene annullata e inoltrata nuovamente. In base a questa definizione, non è chiaro come possa verificarsi un deadlock, poiché i thread non vengono "mai" bloccati in attesa di un blocco. La definizione classica di controllo della concorrenza ottimistica non è facile da implementare nella pratica. Tuttavia, il recente lavoro sulla memoria transazionale hardware sta aprendo alcune possibilità e aprendo una prospettiva su questo vecchio problema.