b"\n_START_ARTICLE_\nDirty read\n_START_PARAGRAPH_\nIn informatica con il termine dirty read, o uncommitted dependency, si intende un errore nella gestione della concorrenza tra transazioni dovuta ad una dipendenza write -> read._NEWLINE_Il dirty read \xc3\xa8 una perdita di modifiche in una base di dati causato da una dipendenza di una transazione da un'altra non completata con successo con conseguente lettura di dati inconsistenti.\n_START_SECTION_\nDefinizione\n_START_PARAGRAPH_\nSi \xc3\xa8 in presenza di dirty read quando una transazione Ta legge un dato X con versione 0, denotato come X(0), ne produce una nuova versione X(1) che viene letta da un'altra transazione Tb, ma X(1) non permane al termine dell'esecuzione Ta.\n_START_SECTION_\nCascading abort\n_START_PARAGRAPH_\nQuando una transazione Ta fallisce, il recovery manager ne elimina gli effetti, in particolare i dati modificati dalla transazione abortita e da tutte le altre transazioni che hanno effettuato dirty read._NEWLINE_In questo caso si verifica una catena di fallimenti di transazioni alterate da Ta noto come cascading abort.\n_START_SECTION_\nRecoverability\n_START_PARAGRAPH_\nAl fine di ovviare i problemi dei cascading abort si introduce il concetto di Recoverability, ripristinabilit\xc3\xa0.\n_START_SECTION_\nDefinizione\n_START_PARAGRAPH_\nUna transazione T \xc3\xa8 Recoverable se le viene impedito di eseguire il commit prima che tutte le transazioni, che scrivono valori letti da T, eseguano commit o abortiscano.\n_START_SECTION_\nAvoiding Cascading Abort\n_START_PARAGRAPH_\nLa recoverability evita di far fallire transazioni che abbiano eseguito il commit. Tuttavia non rimuove il cascading abort per transazioni attive._NEWLINE_Per evitarlo \xc3\xa8 sufficiente impedire la dirty read ritardando ogni lettura di un dato di cui altre transazioni operino write. La lettura sar\xc3\xa0 possibile solo al commit delle transazioni scriventi."