sql-server-2008 – 在Management Studio和Profiler中查询执行时间.它衡量的是什么?

前端之家收集整理的这篇文章主要介绍了sql-server-2008 – 在Management Studio和Profiler中查询执行时间.它衡量的是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我将生产sql Server放在远程数据中心(并且Web服务器位于同一数据中心).在开发过程中,我们观察到一个特定的视图需要很长时间才能在我们的本地开发sql Server中执行(大约60-80秒),我们对它很满意.它被提升为生产,当我在Production DB上运行相同的查询时(来自我的本地Management Studio)我看到查询大约需要7分钟,17秒才能运行(管理工作室的右下角可用).当我运行一个分析器时,我看到所花费的时间执行该查询的时间是437101微秒,尽管它在管理工作室中显示为7:17.,实际上大约是437101毫秒.我的DBA说,虽然我看到探查器和管理工作室有不同的数字,但是看起来只需要大约60到80秒.有人可以告诉我这些持续时间在Profiler和管理工作室中意味着什么?

我的猜测:发送最后一个请求字节和从服务器接收最后一个响应字节之间的持续时间.客户统计数据如下:
客户处理时间:90393
总执行时间:92221
等待服务器回复的时间:1828

我最好猜测分析器上的“持续时间”意味着“sql Server(优化引擎解析查询,生成查询计划或使用现有查询计划从不同页面获取记录)所花费的时间来生成结果集排除数据通过电线传输到客户端所花费的时间“

编辑:我发现这两个时间大致相同(管理工作室vs分析器).它们与我在客户统计中看到的时间有何关联?

有人可以对这些更加轻松吗?

解决方法

如果我正确理解您的问题,您首先会质疑Profiler报告的持续时间与SSMS中显示统计数据之间的差异(一般时间的右下角和/或SET STATISTICS TIME ON).除此之外,您似乎不相信生产DBA的评论,即视图在预期的持续时间~60秒内执行.

首先,从联机丛书中,SSMS将通过SET STATISTICS TIME ON报告的静态:

“Displays the number of milliseconds
required to parse,compile,and
execute each statement.”

你是这样的.至于Profiler中的持续时间,它被描述为:

“The duration (in microseconds) of the
event.”

从我所在的位置来看,这两个应该在功能上是等价的(并且,我确定你注意到,如果您违反sql 2005或更高版本,Profiler将以微秒为单位报告).我这样说是因为这种情况下的“事件”(关于Profiler中的持续时间)是select的执行,包括交付给客户端;这两种情况都是一致的.

您似乎怀疑地理位置是远程执行查询时长时间的罪魁祸首.这很好.您可以通过在一个查询窗口中对视图执行select然后生成另一个查询窗口并查看查询的等待类型来测试:

select
    a.session_id,a.start_time,a.status,a.command,db_name(a.database_id) as database_name,a.blocking_session_id,a.wait_type,a.wait_time,a.cpu_time,a.total_elapsed_time,b.text
from sys.dm_exec_requests a
    cross apply sys.dm_exec_sql_text(a.sql_handle) b
where a.session_id != @@spid;

如果地理位置问题,我会怀疑你会看到像ASYNC_NETWORK_IO这样的东西作为等待类型 – 否则,看看会发生什么.如果您正在分析远程执行的查询,则持续时间将反映您在SSMS中看到的时间统计信息.但是,如果您正在使用Profiler并且发现从与sql Server位于同一数据中心的其中一个Web服务器执行此查询的持续时间仍然需要7分钟,则DBA是一个大胖子:).我会使用Profiler来记录超过1分钟的查询,尝试过滤您的视图并获取平均值以查看您是否达到了性能目标.

因为没有张贴其他答案,我担心我会离开这里 – 但现在已经很晚了,我是新手,所以我想我会试一试!

猜你在找的MsSQL相关文章