web-dev-qa-db-ja.com

DMV sys.dm_exec_query_statsのlast_worker_timeとlast_elapsed_timeの違いは何ですか?

dMVでのlast_worker_timeおよびlast_elapsed_timeの意味は何ですかsys.dm_exec_query_statsとそれらの違いは何ですか?

クエリの下で起動したとき

    SELECT TOP 20 
qs.last_worker_time, qs.last_worker_time/1000000 last_worker_time_in_S,
qs.last_elapsed_time, qs.last_elapsed_time/1000000 last_elapsed_time_in_S
FROM sys.dm_exec_query_stats qs
order by qs.last_worker_time desc

以下のような結果になります。

enter image description here

私が気づいたのは、両方が等しいか、経過時間がワーカー時間より長いかのどちらかでした。両方の意味を理解して、パフォーマンスチューニングにも役立つと思います。

11
Pritesh

ワーカー時間とは、タスクが事実上アクティブで、スケジューラを占有してコードを実行している(つまり、中断されていない)時間です。経過時間は時刻です。 DOP 1クエリでは、実行中にタスクが一時停止された場合、ワーカー時間は最大でも経過時間になります(したがって、クロック時間は進みますが、ワーカー時間は進みません)。 DOP> 1の場合、ワーカー時間は合計されるため、一時停止されたまま経過時間を超える可能性があります。

ワーカー時間と経過時間の有意差はブロックを示しています。経過時間682616と11509766の経過を考慮してください。これは、何か(おそらくロック)を待って11秒間ブロックされたリクエストです。

16
Remus Rusanu