Bonjour,
Nous utilisons Sql Server avec des pages asp.net (dans le cadre d'accès multi-utilisateur).
Nous encapsulons toutes les requêtes contenues dans une page dans une transaction READ.COMMITED.
En cas d'erreur dans une des requêtes, un rollback est effectué.
Parfois une page peut mettre plusieurs minutes à se charger.
Pendant toute la durée de la transaction (qui peut durée plusieurs minutes voire plus rarement + d'une heure), des verrous sont ils posés sur les lignes retournées par les requêtes SELECT, tout comme pour les requêtes INSERT/UPDATE ?
Si oui, je pense que les verrous sur les requêtes SELECT sont inutiles et que donc, on pourrait diminuer l'isolation de ces requêtes SELECT, via l'option snapshot ON de READCOMMITED.
(Cela augmenterait nos performances qui deviennent critiques).
J'aurai besoin de l'avis de personnes plus expertes dans ce domaine..
Mais aussi tous conseils de personnes aussi avisés que moi seront les bienvenus..
D'avance merci beaucoup..
---
P.S. : si des verrous sont posés sur les requêtes SELECT; dans le cas d'une longue transaction, si une autre transaction tente d'accèder aux même données, elle sera obligé d'attendre la fin de la première transaction, et dans ce cas, sa page ne pourra s'afficher que lorsque la première transaction sera terminée..
Or j'ai testé, et ça ne le fais pas : j'arrive à afficher rapidement une page qui accède aux mêmes données qu'une autre page que j'ai lancé avant et dont la transaction dure très longtemps (qui n'est pas terminée alors que ma deuxième page (lancée en deuxième) a pu s'afficher avant).
Partager