Niveaux d’isolation, synthèse

Théorie et pratique

      Voici le tableau du standard SQL en ce qui concerne les anomalies possibles aux différents niveaux d’isolation :

Niveau d’isolation Lectures sales Lectures non reproductibles Lectures fantômes Anomalies de sérialisation
READ UNCOMMITTED Possibles Possibles Possibles Possibles
READ COMMITTED Impossibles Possibles Possibles Possibles
REPEATABLE READ Impossibles Impossibles Possibles Possibles
SERIALIZABLE Impossibles Impossibles Impossibles Impossibles

      Voici le tableau en ce qui concerne les anomalies possibles aux différents niveaux d’isolation avec PostgreSQL 9.1+ :

Niveau d’isolation Lectures sales Lectures non reproductibles Lectures fantômes Anomalies de sérialisation
READ UNCOMMITTED Impossibles Possibles Possibles Possibles
READ COMMITTED Impossibles Possibles Possibles Possibles
REPEATABLE READ Impossibles Impossibles Impossibles Possibles
SERIALIZABLE Impossibles Impossibles Impossibles Impossibles

      Voici le tableau en ce qui concerne les anomalies possibles aux différents niveaux d’isolation avec Oracle Database :

Niveau d’isolation Lectures sales Lectures non reproductibles Lectures fantômes Anomalies de sérialisation
READ COMMITTED      Impossibles Possibles Possibles Possibles
SERIALIZABLE Impossibles Impossibles Impossibles Possibles (*)

(*) provoquent parfois des ORA-08177 mais ce n’est pas le comportement souhaité

      Vous pouvez retrouvez des explications et des démonstrations effectuées avec PostgreSQL et Oracle pour chaque niveau d’isolation en lisant les articles ci-dessous :

      En résumé, si vous travaillez avec le niveau d’isolation par défaut READ COMMITTED avec Oracle, aucun changement à envisager avec PostgreSQL dont c’est également le niveau par défaut. En revanche, si vous travaillez avec le niveau SERIALIZABLE d’Oracle, il ne correspond pas strictement au standard SQL et correspond au niveau REPEATABLE READ de PostgreSQL.

Mise à jour : 12/11/2016