Controllo della concorrenza
# Controllo della concorrenza

In informatica il controllo della concorrenza si occupa dell'analisi e della risoluzione dei problemi legata alla gestione della concorrenza.

La concorrenza in ambito informatico si riferisce al problema di gestire e sincronizzare la gestione di più risorse che diversi processi devono utilizzare contemporaneamente. Se l'allocazione delle risorse viene eseguita senza nessuna strategia particolare da parte dei processi questo può portare a situazioni di stallo come i deadlock o la starvation. Per evitare questi fenomeni si sono sviluppate delle strategie di gestione delle risorse e dei meccanismi per la loro allocazione.

## Controllo della concorrenza nelle basi di dati

Il controllo della concorrenza è un concetto importante quando si parla di basi di dati. In questo contesto transazioni che vengono eseguite concorrentemente possono dare luogo a 3 tipi i problemi:

* Lost update (dipendenza write → write)
* Dirty read (dipendenza write → read)
* Unrepeatable read (dipendenza read → write)

In base a questi tipi di problemi possiamo definire alcuni livelli di isolamento della base di dati:

* Livello 0: CHAOS. Si presentano tutti e tre i problemi.
* Livello 1: BROWSE. Assenza di lost update.
* Livello 2: CURSOR STABILITY. Assenza di lost update e di dirty read.
* Livello 3: REPEATABLE READS. Nessuno dei tre problemi.

Il controllo della concorrenza nelle basi di dati viene gestito dal transaction manager, dal lock manager e dal data manager.

