タスク、セッション、要求、またはトランザクションが現在使用されているI / Oリソースの量を調べる方法
-
29-09-2020 - |
質問
現在の入出力リソースの量を現在使用しているのか、またはトランザクションが現在使用されていますか?
タスクでは、 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