Isolation des transactions

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 :

dirty reads

Une transaction lit des données écrites par une transaction concurrente libre.

non-repeatable reads

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.

phantom read

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
Postgres permet la lecture non-libre et les niveaux d'isolation sérialisables.