タスク、セッション、要求、またはトランザクションが現在使用されているI / Oリソースの量を調べる方法

dba.stackexchange https://dba.stackexchange.com/questions/116878

質問

現在の入出力リソースの量を現在使用しているのか、またはトランザクションが現在使用されていますか?

タスクでは、 DMV sys.dm_os_tasks 。 セッションによるDMV SYS.DM_EXEC_SESSIONS

セッションに要求がある場合には、リクエストでDMV sys.dm_exec_requests またはセッションには代わりにトランザクションがある可能性があります - sys。 DM_TRAN_DATABASE_TRANSACTIONS

入出力の使い方

をどのようにリンクできますか。

私はを見たDMVを見ていました。 DMV SYS.DM_OS_TASKS

dmv sys.dm_os_tasks SQL Serverで現在実行されているプロセスの詳細については、いくつかの興味深い列があります。

sys.dm_os_tasks - pending_io_byte_count

を表示しない

しかし、私のタスクのそれぞれのいずれがPending I / Oをバイト単位で扱っているかを識別しようとすると、常にゼロです。

画像の説明がここに入力されています

私がいくつかのCXPacketsを監視しようとしている間の私のクエリの結果の例です。

pending_io_countは問題ありませんが、pending_io_by_countsは常にゼロです。

代替案が何でありますか? 各並列プロセスの入出力使用量を測定したい。

実際には、各セッションまたはリクエストの入出力使用法である可能性があります。

要求なしのセッションさえ見るのは良いことが良いので、他のプロセスをブロックしている可能性があるため、

href="https://i.stack.imgur.com/5okq6.jpg" rel="nofollownoreferrer"> 画像の説明がここに入力されています

役に立ちましたか?

解決

クエリの実際の物理I / Oを探している場合は、 'actualphysicalreads'要素のXML Showplanを調べる必要があります。

schemas.microsoft.com/sqlserver/2004/07/showplan

しかし、これらの物理的な読み取りは、計画がキャッシュされた初めて発生するだけである可能性があります。その後の実行は、ディスクからではなく、メモリからページを引っ張る可能性が高くなります。

hth

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top