Lost update

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

In informatica, con il termine lost update si intende un errore nella gestione della concorrenza tra transazioni dovuta ad una dipendenza write -> write.

In altre parole il lost update è una perdita di modifiche da parte di una transazione causato da un aggiornamento operato da un'altra transazione.

Definizione[modifica | modifica wikitesto]

Si è in presenza di lost update quando una transazione Ta legge un dato X con versione 0, denotato come X(0), ne produce una nuova versione X(1), e un'altra transazione Tb legge la vecchia versione X(0) e produce X(2).

Esempi[modifica | modifica wikitesto]

Esempio 1[modifica | modifica wikitesto]

In tabella viene mostrato un esempio di lost update:

Tempo Transazione Ta Transazione Tb
t(0) read[X(0)]
t(1) read[X(0)]
t(2) write[X(1)]
t(3) write[X(2)]

Come possiamo vedere la transazione Ta effettua una lettura del dato X(0) al tempo t(0). Nel tempo t(1) la transazione Tb legge il dato X(0). In seguito, al tempo t(2) la transazone Ta modifica il dato X(0) attribuendogli il nuovo valore X(1). Infine nel tempo t(3) la transazione Tb attribuisce un ulteriore nuovo valore X(2) ottenuto prendendo in input il valore X(0) al tempo t(1). In questo esempio c'è una perdita dell'aggiornamento (lost update) di Ta.

Esempio 2[modifica | modifica wikitesto]

Nella tabella successiva viene mostrato un lost update in caso di rollback:

Tempo Transazione Ta Transazione Tb
t(0) read[X(0)]
t(1) read[X(0)]
t(2) write[X(1)]
t(3) write[X(2)]
t(4) rollback

In questo caso la modifica operata da Ta al tempo t(2) viene persa a causa del rollback di Tb al tempo t(4) che ripristina il valore X(0) valido al tempo t(1).

Bibliografia[modifica | modifica wikitesto]

  • Paolo Ciaccia, Dario Mario, Lezioni di basi di dati, 2013, Editrice Esculapio, ISBN 978-8874887187

Voci correlate[modifica | modifica wikitesto]