/ / LINQ to SQL: Premier appel - asp.net, sql-server-2005, linq-to-sql

LINQ to SQL: Premier appel - asp.net, sql-server-2005, linq-to-sql

J'utilise LINQ to SQL pour accéder à la base de données (SQL Server 2005). Le premier appel prend jusqu'à 10 secondes pour récupérer les données, un deuxième appel prend moins d'une seconde.

Que peut-on faire pour améliorer les performances du premier appel à la base de données? L'action de base de données se produit dans le contrôleur d'une application asp.net mvc.

Merci

Réponses:

1 pour la réponse № 1

Je crois que ce que vous vivez, c'est SQL Serverla mise en cache de la requête et est normal. Maintenant, si les 10 secondes d'origine sont trop longues, vous devez capturer la requête SQL (je suggérerais le profileur), puis l'examiner. Dans le passé, j’exécutais le SQL dans la console de gestion avec l’affichage du plan d’exécution réel sélectionné. Il existe des ressources sur le Web pour expliquer comment le lire, mais cela devrait vous aider à trouver le goulot d'étranglement. HTH

modifier Je veux dire, il est normal que les requêtes de longue durée s’accélèrent une fois qu’elles ont été exécutées une fois, puisque SQL Server met la requête en cache (je crois que le plan d’exécution est exact) pour une utilisation ultérieure.

Patauger


0 pour la réponse № 2

Pas sûr que ce genre de timeout soit lié à LINQ ou ASP.NET. Avez-vous également remarqué le délai d'expiration lorsque vous utilisez la base de données avec ADO.NET?


0 pour la réponse № 3

Je doute fort que Linq-to-SQL soit le coupable ici. Pouvez-vous publier la génération T-SQL L2S, ainsi que le nombre de lignes et d'informations sur l'indexation?


0 pour la réponse № 4

Je pense que ce que vous expérimentez, c’est le processus de compilation Asp.Net lors du premier chargement de la page, et non un problème de performances avec LTS. Un moyen de mesurer les performances est de le profiler avec le Linq to Sql Profiler. Il vous dira exactement quelle est la requête générée, ainsi que les temps d'exécution de la requête et de votre code.