1 回答

TA贡献1111条经验 获得超0个赞
2018-09-07 14:10:46,421 1 INFO EntityDataRepository [jobInstanceID: 0] - -- 在 11776 毫秒内完成,结果:SqlDataReader
这意味着SqlCommand.ExecuteReader()
已经完成,服务器开始向客户端返回行。SQL Sever 中的查询此时仍在执行。它可能已经假脱机了所有查询结果,或者它可能刚刚使用流式查询计划找到并返回了前几个匹配的行。因此,IQueryable<T>.ToList()
要完成,查询需要在服务器上完成执行,结果行必须传输到客户端,EF 必须读取行并将它们具体化为 type 的类实例T
。
可以使用Visual Studio Profiler、性能计数器或System.Diagnostics.Process分析客户端工作。
SQL Server 跟踪计划缓存中查询的查询执行统计信息,如果在 SQL 2016+ 中使用查询存储,则跟踪所有查询。统计信息将向您显示查询经过的时间,其中包括等待客户端读取(和处理)行和所有其他等待的时间,以及“工作时间”,即查询使用的 CPU 时间。SQL 2017 和 Azure SQL 数据库中的查询存储还跟踪每个查询的等待统计信息,因此您可以区分客户端ASYNC_NETWORK_IO
等待( ) 和其他等待,如数据文件读取 ( PAGEIOLATCH
)、锁定等待 ( LCK_*_*
) 等。
- 1 回答
- 0 关注
- 154 浏览
添加回答
举报