Salut à tous,
comme certains le savent j'accuse de gros problèmes de performances dans mon système. Et ne trouvant pas de causes évidentes je commence à élaborer des théories de moins en moins logiques.

J'aimerais des avis sur celle qui suit :

On a une base de données SQL Server 2008 et 2012 qu'on accède via des applications windev et un accès natif.
Pour ceux à qui ça parle, nous n'avons pas d'accès direct au tables. Nous n'utilisons pratiquement que des variables de type sources de données remplies avec des résultats de requêtes SQL.

Bref, quand j'ai commencé à travailler à mon post actuel, tout les SELECT étaient suivi d'un WITH(NOLOCK) et les UPDATE d'un WITH(ROWLOCK).

A ce moment là, c'était indispensable pour que ça fonctionne. Car il n'y avait pas de Lock-Timeout du coup chaque requête sur une table lockée retournait directement une erreur sans attendre la moindre seconde.

Après un peu de recherche j'ai ajouté un lock timeout de 30 secondes ce qui fait que mes requêtes attendent 30 secondes avant de me retourner une erreur le cas échéant.

Je me demande si mes performances ridicules ne viendrais pas du fait que comme tout les select ont un With(Nolock) il n'ont pas besoin d'attendre que les ressources soient libérées et peuvent être tous traités en même temps.
Ce qui ferait saturé Sqlserveur quand trop de gens lancent des requêtes en même temps sur les mêmes ressources. Ce matin au pire moment j'avais ~200 locks sur mes tables.

Si vous avez lu jusqu'ici, encore un petit effort pour donner votre avis