繁体   English   中英

使用LinqPad进行SQL性能调整

[英]SQL performance tuning with LinqPad

我是DBA和软件工程师,负责管理SQLServer 2016企业数据库。 应用程序Sql是用EntityFramework而不是存储过程编写的。

DBA是否应该在Linqpad中放置团队的EF查询以调整开发性能? 我上周了解了LinqPad,并惊讶于它如何将Linq查询转换为SQL。 有时,Linq查询是不可预测的/随机的(MS仍在致力于产品改进)。 这样,我不必等待临时查询即可在暂存或生产环境中命中SQLServer Profiler。 在sprint开发期间,我可以与应用程序开发人员一起进行调整。

这是性能调整的合适策略吗? 我读了许多SQL博客,但是没有人讨论LinqPad策略。 只是询问这是否对性能优化有用。

您提到您的开发人员正在使用实体框架。 请注意,默认情况下,LINQPad使用LINQ-to-SQL将LINQ表达式树转换为SQL查询。 由于LINQ-to-SQL和EF不一定生成相同的SQL输出,因此您需要遵循文档中将LINQPad与Entity Framework结合使用的步骤,以确保它使用EF来创建SQL。

但是,即使将LINQPad配置为使用EF,仍然有机会最终调整与应用程序生成的查询不同的查询。 例如,如果应用程序中使用的实体数据模型与配置LINQPad时选择的实体数据模型不同。 或者,如果您的应用程序和LINQPad使用的是其他版本的EF等。

对于您的开发人员而言,查看和性能测试特定查询的一种更可靠的方法是配置Entity Framework,以将生成的SQL记录到某处-甚至可以在Visual Studio的“调试输出”窗口中查看该MSDN博客文章: 如何查看实际的实体框架生成的SQL查询

如果他们拥有要使用的本地数据库或对dev SQL Server实例具有适当的权限,则他们也可以运行sp_BlitzCache来跟踪由Entity Framework生成的任何讨厌的查询。

LINQPad绝对是查看您的LINQ表达式如何转换为SQL查询的好方法。 它有助于获得关于从哪种LINQ扩展方法中提取什么SQL的直观认识。 但是,如果您尝试查看和调整由应用程序生成的查询,则它可能不是工作的最佳工具。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM