Niveau d'isolement SQL Server : la différence entre une lecture validée et une lecture répétable
Les niveaux d'isolement des lectures validées et répétables de SQL Server peuvent sembler similaires à première vue, mais il existe des différences significatives.
Lire engagé
Read Comended garantit que toutes les données lues par la transaction sont validées lors de leur lecture. Cela empêche les transactions de voir des « données sales », c'est-à-dire des données qui étaient dans un état intermédiaire lors d'une transaction non validée. Cependant, la lecture validée ne garantit pas que les lectures ultérieures des mêmes données renverront la même valeur. D'autres transactions peuvent toujours modifier ou supprimer les données qui ont été lues avant la fin de la première transaction.
Exemple :
- La transaction A lit la ligne avec la valeur « 1 ».
- La transaction B met à jour la même ligne à « 2 » et est validée.
- Si la transaction A relit la ligne avant de valider, elle peut voir l'ancienne valeur ('1') ou la nouvelle valeur ('2'), selon le moment.
Lecture répétable
Les lectures répétables offrent un niveau d'isolement plus élevé, garantissant :
- Les données lues lors d'une transaction ne peuvent pas être modifiées ou supprimées par d'autres transactions avant que la première transaction ne soit validée.
- Tant que la première transaction reste non validée, les lectures ultérieures des mêmes données renverront la même valeur.
Exemple :
- La transaction A lit la ligne avec la valeur « 1 ».
- La transaction B tente de mettre à jour la même ligne, mais est bloquée jusqu'à ce que la transaction A soit validée.
- Si la transaction A relit la ligne, elle verra toujours la même valeur (« 1 ») jusqu'à ce qu'elle soit validée.
Résumé
- La lecture validée empêche les « lectures sales », mais ne garantit pas la cohérence des lectures ultérieures.
- Les lectures répétables garantissent la cohérence des lectures ultérieures et empêchent d'autres transactions de modifier les données qui ont été lues avant la validation de la première transaction.
- Des niveaux d'isolement plus élevés offrent de meilleures garanties de cohérence des données, mais peuvent réduire la simultanéité et les performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!