使用LINQ时数据库性能会有多大的额外开销?

21

相较于使用大部分低级C代码优化的自定义查询,使用C#和LINQ在SQL Server 2008后端中的数据库性能开销有多少?

我特别考虑了一个数据密集型程序的情况,在每个屏幕上至少进行一次数据刷新或更新,并且会有50-100个同时用户。

2个回答

2

感谢您,Stu。总的来说,如果您能够使用编译选择,LINQ to SQL可能没有显着的数据库性能开销,并且更新的较慢函数很可能会更快,除非您有一个真正熟练的专家进行大部分编码。


2
根据我的经验,只要编写查询的人知道自己在做什么,并采取通常的预防措施以确保生成的查询是最优的,必要的索引已经放置等等,开销非常小。换句话说,数据库的影响应该是相同的;应用程序方面有一个最小但通常可以忽略不计的开销。
也就是说……有一个例外情况;如果单个查询生成多个聚合,L2S提供程序会将其转换为一个大查询,每个聚合都有一个子查询。对于大表来说,这可能会对I/O产生重大影响,因为查询的数据库I/O成本随着查询中每个新聚合而呈数量级增长。
解决这个问题的方法当然是将聚合移动到存储过程或视图中。Matt Warren有一些示例代码,用于替代查询提供程序,以更有效的方式翻译这种类型的查询。
资源:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接