verrou sur base de données

Isolation

Dans le métier des bases de données, l’isolation est un terme utilisé pour définir la capacité d’un logiciel à compartimenter et bien isoler les modifications d’une transaction afin qu’il n’y ait pas de conflits avec les autres modifications des autres transactions en cours. Une fois la transaction complétée, l’isolation est levée. Derrière l’isolation, il y a le besoin de s’assurer que les propriétés ACID sont bien satisfaites.

Pour isoler correctement, des verrous sont posés sur des données. Une fois la transaction validée, le verrou est levé. Les verrous peuvent être de plusieurs types suivant l’importance de l’isolation attendue :

  • Isolation serializable : c’est le niveau le plus élevé avec verrouillage d’étendues de clés ;
  • Isolation snapshop : Une copie des données est lue. N’est pas présent dans la norme SQL ;
  • Isolation repeatable read : Les données d’une même sélection peuvent être manipulées seulement si la plage de données est différente (par exemple un intervalle de date différent) ;
  • Isolation read commited : La donnée actuellement traitée par la transaction peut être manipulée par une autre transaction validée ;
  • Isolation read uncommited : c’est le niveau le plus bas. La donnée actuellement traitée par la transaction peut être manipulée par une autre transaction non validée ;
  • Pas d’isolation : aucune protection.

L’isolation permet de se protéger contre 4 risques bien connus des administrateurs de bases de données :

  • Mise à jour perdue : elle se produit lorsque 2 modifications ont lieu sur les mêmes données en même temps. La dernière transaction écrase la précédente. La donnée est perdue ;
  • Lecture sale (dirty read) : une transaction lit des données qui n’ont pas finies d’être traitées. Ces données ne sont pas définitives mais l’autre transaction ne le sait pas et les considère comme valides ;
  • Lecture impossible à reproduire (non repeatable read): cela arrive lorsque la même requête donne des résultats différents. C’est le signe que des traitements sont en cours ;
  • Lecture fantôme (phantom read): un résultat fantôme apparaît lorsqu’une même recherche renvoie des lignes satisfaisant à une condition de recherche différentes.

La pose de verrous forts n’est pas la panacée pour autant : plus de verrous forts ralentit la base de données. Le système est obligé d’attendre la levée de verrous pour accéder aux données. De plus, l’utilisation de verrous forts augmente le risque de verrous mortels. C’est cas par cas que la question de l’isolation doit être résolue. Pour des calculs statistiques, par exemple, une isolation faible n’est pas très gênante. Il n’en va pas de même lorsqu’on travaille sur des réservations de places dans un avion ou sur des flux financiers.