Quelle est la surcharge de performances de la base de données lors de l’utilisation de LINQ ?

StackOverflow https://stackoverflow.com/questions/4782

Question

Quelle est la surcharge de performances de la base de données impliquée par l'utilisation de C# et LINQ par rapport aux requêtes optimisées personnalisées chargées principalement avec du C de bas niveau, toutes deux avec un backend SQL Server 2008 ?

Je pense spécifiquement ici à un cas où vous avez un programme assez gourmand en données et où vous effectuerez une actualisation ou une mise à jour des données au moins une fois par écran et où vous aurez 50 à 100 utilisateurs simultanés.

Était-ce utile?

La solution

D'après mon expérience, la surcharge est minime, à condition que la personne qui écrit les requêtes sache ce qu'elle fait et prenne les précautions habituelles pour garantir que les requêtes générées sont optimales, que les index nécessaires sont en place, etc.En d’autres termes, l’impact sur la base de données devrait être le même ;il y a une surcharge minime mais généralement négligeable du côté de l'application.

Cela dit...il y a une exception à cela ;si une seule requête génère plusieurs agrégats, le fournisseur L2S la traduit en une requête volumineuse avec une sous-requête par agrégat.Pour une grande table, cela peut avoir un impact significatif sur les E/S, car le coût des E/S de la base de données pour la requête augmente considérablement pour chaque nouvel agrégat de la requête.

La solution de contournement consiste bien sûr à déplacer les agrégats vers une procédure ou une vue stockée.Matt Warren propose un exemple de code pour un fournisseur de requêtes alternatif qui traduit ce type de requêtes de manière plus efficace.

Ressources:

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=334211

http://blogs.msdn.com/mattwar/archive/2008/07/08/linq-building-an-iqueryable-provider-part-x.aspx

Autres conseils

Merci Stu.L'essentiel semble être que LINQ to SQL n'a probablement pas de surcharge significative en termes de performances de base de données avec les versions les plus récentes si vous êtes en mesure d'utiliser une sélection compilée, et les fonctions de mise à jour plus lentes seront probablement plus rapides à moins que vous n'ayez une VRAIMENT forte expert effectuant la majeure partie du codage.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top