Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何持续测量环境足迹绩效?_Sql Server_Wpf_Entity Framework_Windows Services - Fatal编程技术网

Sql server 如何持续测量环境足迹绩效?

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)在我的情况下也不行 我考

我有一个使用EntityFramework4的大型应用程序。它是服务器上的WCF(托管在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。尽管如此,这看起来是个不错的选择