![]() |
1
1
分析,分析,分析。: 不仅要测量时间,还要注意I/O。频繁执行的I/O密集型查询可以由于缓存而快速执行,但反过来会对整个DB服务器性能产生负面影响,因为其他查询的可用资源将更少。
正如您所说,L2s可能有点黑盒,因此您需要在实际用户使用应用程序时尝试复制所有场景和/或配置文件。然后使用它1)调整查询2)添加索引3)进行任何其他所需的更改以获得所需的性能。
我有一个专门为linq-to-sql设计的分析工具,它可以减少一点黑盒——它允许您在将生成的查询与导致执行特定查询的代码(调用堆栈)绑定的同时进行运行时分析。您可以下载并获得免费试用许可证,网址为http://www.huagati.com/l2sprofiler/“rel=”nofollow noreferrer“>http://www.huagati.com/l2sprofiler/ 这里更详细地介绍了我的分析器的背景原因: http://huagati.blogspot.com/2009/06/profileing linq to sql applications.html …这里介绍了一些高级分析选项: http://huagati.blogspot.com/2009/08/walkthrough of-newst-filters and.html 如果有许多表和许多列,另一个可能有用的方法是将索引信息获取到代码编辑器中。这是通过将带有该信息的XML文档注释添加到实体类和成员属性中来完成的;然后该信息将显示在vs代码编辑器的工具提示中:
…这样您就可以在键入查询时看到,如果有一个索引覆盖了在where子句等中使用的列,为了避免在其中键入所有这些内容,我也为此创建了一个工具。请参阅 http://www.huagati.com/dbmltools中的“更新文档”功能。/ 由于缓存速度快,但反过来会对整个数据库服务器性能产生负面影响,因为其他查询的可用资源将更少。
正如您所说,L2s可能有点黑盒,因此您需要在实际用户使用应用程序时尝试复制所有场景和/或配置文件。然后使用它1)调整查询2)添加索引3)进行任何其他所需的更改以获得所需的性能。 我有一个专门为linq-to-sql设计的分析工具,它可以减少一点黑盒——它允许您在将生成的查询与导致执行特定查询的代码(调用堆栈)绑定的同时进行运行时分析。您可以下载它并在获得免费试用许可证 http://www.huagati.com/L2SProfiler/ 这里更详细地介绍了我的分析器的背景原因: http://huagati.blogspot.com/2009/06/profiling-linq-to-sql-applications.html …这里介绍了一些高级分析选项: http://huagati.blogspot.com/2009/08/walkthrough-of-newest-filters-and.html 如果有许多表和许多列,另一个可能有用的方法是将索引信息获取到代码编辑器中。这是通过将带有该信息的XML文档注释添加到实体类和成员属性中来完成的;然后该信息将显示在vs代码编辑器的工具提示中:
…这样您就可以在键入查询时看到,如果有一个索引覆盖了WHERE子句等中使用的列,为了避免在其中键入所有这些内容,我也为此创建了一个工具。请参阅中的“更新文档”功能 http://www.huagati.com/dbmltools/ |
![]() |
2
2
除此之外,我通常会将SQL事件探查器和CLR事件探查器与大型ISH数据集上的一些模拟用户一起使用,并观察通过DataContext进行的长时间运行的查询和/或长时间运行的调用(这可能表示在封面下发生了多次往返)。我个人的偏好是在默认情况下禁用所有数据上下文的延迟加载和对象跟踪,因此在大多数情况下,我必须选择多个往返。虽然您不能直接影响生成的SQL,但是您可以小心使用loadWith/associateWith,并确保不会获取非常大/效率低下的结果集,并分解具有大量昂贵联接的查询(有时多次往返比大表上的mondo联接便宜)。 这都是关于测量的-使用任何你能使用的工具。 |
![]() |
Rm558 · 是否可以更改XML类型上的LINQPad代码生成? 7 年前 |
![]() |
MJK · 规范模式-使用ICollection实现表达式 7 年前 |
![]() |
Roland Ebner · 为实体框架多对多关系构建表达式树? 7 年前 |