OVH Cloud OVH Cloud

Question pour me rassurer

1 réponse
Avatar
Vincent
Bonjour à tous, dans du code VB.NET, je lance une transaction avec le niveau
d'isolation serializable et je fais une lecture sur une table.
J'aurais aimé savoir si la lecture sur ma table posait le verrou sur mon
enregistrement tout de suite ou attendait l'update pour le poser ?
Car j'ai l'impression que tant que je ne fait pas de modif, il n'y a pas de
verrou posé.

Merci d'avance

1 réponse

Avatar
Christian Robert
Bonjour,

Un select pose bien un verrou, mais de type partagé, c'est à dire qu'il
permet d'autres verrous eux aussi partagés, c'est à dire d'autres lectures.

Les modifications doivent elles attendre que tous les verrous partagés
soient levées, elles posent quant à elles un verrrou exclusif. Pas d'écriture
possible tant qu'une lecture est en cours, ou en tout cas hors de la
transaction (toute autre connexion). Les niveaux d'isolation permettent de
définir la période pendant laquelle est maintenu le verrou, dans le cas par
exemple du COMMITED_READ (option par défaut) il est maintenant juste pendant
lexecution du Select. Dans le cas du REPEATABLE_READ (un cran au dessus) il
est maintenu jusqu'à la fin de la transaction.

D'autre part le niveau serializable pose un souci du fait qu'il interdit les
suppression et les insertion dans la table à d'autres connexion pendant la
transaction courante. A moins que ce soit ce que vous souhaitiez évitez ce
niveau d'isolation.

--
Cordialement

Christian Robert
Consultant - Formateur chez Winwise
MCT - MCDBA - MCSD
MCTS & MCITP SQL Server 2005


"Vincent" a écrit :

Bonjour à tous, dans du code VB.NET, je lance une transaction avec le niveau
d'isolation serializable et je fais une lecture sur une table.
J'aurais aimé savoir si la lecture sur ma table posait le verrou sur mon
enregistrement tout de suite ou attendait l'update pour le poser ?
Car j'ai l'impression que tant que je ne fait pas de modif, il n'y a pas de
verrou posé.

Merci d'avance