我是DBA &软件工程师,管理着SQLServer 2016企业数据库。Application是用EntityFramework而不是存储过程编写的。
DBA是否应该将团队的EF查询放在Linqpad中,以便在开发中调整性能?上周,我了解了LinqPad,并惊讶于它如何将Linq查询转换为SQL。有时Linq查询是不可预测的/随机的(MS仍在改进产品)。这样,我就不需要等待随机查询就可以在准备或生产中访问SQLServer事件探查器。我可以在sprint开发期间与应用程序开发人员进行调优。
这是否是性能调优的适当策略?我读过许多sql,但是没有人讨论LinqPad策略。只是询问一下这是否有助于性能调优。
发布于 2018-09-26 13:12:59
您提到您的开发人员正在使用实体框架。注意,默认情况下,LINQPad使用LINQPad将LINQ表达式树转换为SQL查询。由于LINQ和EF不一定生成相同的SQL输出,因此您需要遵循将LINQPad与实体框架结合使用文档中的步骤,以确保它使用EF创建SQL。
但是,即使您将LINQPad配置为使用EF,仍然有可能调整与应用程序生成的查询不同的查询。例如,如果应用程序中使用的实体数据模型与配置LINQPad时选择的实体数据模型不同。或者,如果您的应用程序和LINQPad正在使用不同版本的EF等。
对于您的开发人员来说,查看和性能测试特定查询的一种更可靠的方法是配置实体框架,以便在某个地方记录生成的SQL --甚至到Visual中的“调试输出”窗口,这个MSDN博客文章是:如何查看实体框架生成的实际SQL查询
如果它们具有正在处理的本地数据库,或者对dev Server实例具有适当的权限,则还可以运行sp_BlitzCache来跟踪实体框架生成的任何令人讨厌的查询。
LINQPad绝对是查看如何将LINQ表达式转换为SQL查询的好方法。它有助于直观地了解什么是LINQ扩展方法产生的SQL。但是,如果您想查看和调优应用程序生成的查询,那么它可能不是最佳的工作工具。
https://stackoverflow.com/questions/52575085
复制相似问题