Sql server 如何持续测量环境足迹绩效?
我有一个使用EntityFramework4的大型应用程序。它是服务器上的WCF(托管在Windows服务中)和客户端上的WPF。Sql server 如何持续测量环境足迹绩效?,sql-server,wpf,entity-framework,windows-services,Sql Server,Wpf,Entity Framework,Windows Services,我有一个使用EntityFramework4的大型应用程序。它是服务器上的WCF(托管在Windows服务中)和客户端上的WPF。 它的某些部分速度很慢,我想知道这是否是因为数据库访问速度慢 我想不断地测量代码的性能,例如,记录每个查询的执行时间(最好包括EF自己的东西,比如物化),以便稍后进行分析。我该怎么做 像EFProf这样的工具(因为即使它们可以测量db server执行特定查询所花费的时间,我如何运行它们一周呢?和scape(它不支持Windows服务和WPF)在我的情况下也不行 我考
它的某些部分速度很慢,我想知道这是否是因为数据库访问速度慢
我想不断地测量代码的性能,例如,记录每个查询的执行时间(最好包括EF自己的东西,比如物化),以便稍后进行分析。我该怎么做
像EFProf这样的工具(因为即使它们可以测量db server执行特定查询所花费的时间,我如何运行它们一周呢?和scape(它不支持Windows服务和WPF)在我的情况下也不行
我考虑创建自己的SqlConnection子类,但我的版本只接受ObjectContext中的EntityConnection,并且EntityConnection标记为sealed。这个选项只允许测量原始sql查询的执行时间,而不允许测量EF的代码
我现在看到的唯一选项是:1)更新到EF 6并编写SqlConnection子类(这不会度量EF自己的代码);2)更新到更高版本并使用类似于
的东西
当然,这并不是一本书(只是看看掌握Enity框架)——因为我们大多数人只需要使用一个库,不知道它有多快(讽刺)。正在进行各种优化,包括linq表达式缓存和SQL server选择缓存的内容,唯一的方法是测量性能速度和内存消耗 对于您的情况,我认为Microsoft提供了一种简单的方法
此外,您还可以通过SQL profiler获得一些信息,这只是需要更多的工作。要查看执行的查询日志,您不必编写SqlConnection子类,设置
context.Database.Log=Console.WriteLine代码>已足够。只需用您自己的日志操作替换控制台.WriteLine
。但正如您所说,这只能让您测量查询执行时间,而不是EF代码。为什么不分析数据库呢?如果您看到具有高IO或持续时间的查询,请通过调整DB对象(如索引)或查找EF语句并对其进行调整来调整这些查询。@Igor数据库本身可能不是problem@AdilMammadov那需要更新到EF6,我想《一瞥》怎么样:你忘了提到它需要更新到EF6。尽管如此,这看起来是个不错的选择