현재 작업, 세션, 요청 또는 트랜잭션을 사용하고있는 I / O 리소스의 양을 찾는 방법은 무엇입니까?
-
29-09-2020 - |
문제
작업, 세션, 요청 또는 트랜잭션이 현재 사용중인 I / O 리소스의 양을 찾는 방법은 무엇입니까?
태스크에 의해 DMV는 DMV를 의미합니다. sys.dm_os_tasks . 세션별로 나는 DMV sys.dm_exec_sessions
를 의미합니다.때로는 세션이 요청을 수행합니다. 요청에 따라 DMV sys.dm_exec_requests 또는 세션이 대신 트랜잭션이있을 수 있습니다. Sys. DM_TRAN_DATABASE_Transactions
I / O 사용량 과 함께 이러한 것들을 어떻게 연결할 수 있습니까?
나는 DMV sys.dm_os_tasks .
dmv sys.dm_os_tasks SQL Server에서 현재 실행중인 프로세스에 대한 자세한 내용을 찾으려면 흥미로운 열이 있습니다.
sys.dm_os_tasks - pending_io_byte_count를 표시하지 않음
그러나 각 작업 각각이 바이트 단위로 보류중인 I / O를 처리하는 방법을 식별하려고하면 항상 0입니다.
이것은 일부 CXPackets 대기를 모니터하려고하는 동안 내 쿼리 결과의 결과입니다.
pending_io_count는 괜찮은 것 같지만 pending_io_by_counts는 항상 0입니다.
대안이 될 수 있습니까? 각 병렬 프로세스의 I / O 사용을 측정하고 싶습니다.
실제로 각 세션이나 요청의 I / O 사용량 일 수 있습니다.
요청없이 세션조차도 다른 프로세스를 차단할 수 있기 때문에 때로는보아야 할 수 있습니다.
해결책
쿼리의 실제 물리적 I / O를 찾고있는 경우 'ActualPhySicalReads'요소에 대해 XML ShowPlan을보아야합니다.
schemas.microsoft.com/sqlserver/2004/07/showplan <./ P>
그러나 이러한 물리적 읽기는 계획을 처음으로 캐시 할 때만 발생할 가능성이 있습니다.후속 실행은 디스크가 아닌 메모리에서 페이지를 가져올 가능성이 더 큽니다.
hth