Le standard ANSI/ISO SQL définit quatre niveaux d'isolation des transactions en termes de trois phénomènes qui doivent être évités entre les transaction concurrentes. Ces phénomènes indésirables sont :
Une transaction lit des données écrites par une transaction concurrente libre.
Une transaction relit des données qu'elle a précédemment lues et trouve que les données ont été modifiées par une autre transaction non libre.
Une transaction ré-exécute une requête en renvoyant un ensemble de lignes qui satisfont une condition de recherche et trouve que les lignes additionnelles satisfaisant la condition ont été insérées par une autre transaction non libre.
Les quatre niveaux d'isolation et leur comportement correspondant sont décrits ci-dessous :
Tableau 10-1. Niveaux d'isolation Postgres
Dirty Read | Non-Repeatable Read | Phantom Read | |
---|---|---|---|
Read uncommitted | Possible | Possible | Possible |
Read committed | Not possible | Possible | Possible |
Repeatable read | Not possible | Not possible | Possible |
Serializable | Not possible | Not possible | Not possible |