통계 IO :
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Workfile'. Scan count 128, logical reads 5952, physical reads 576, read-ahead reads 6080, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Table1'. Scan count 9, logical reads 90450, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
그래서 몇 가지 질문
1. 통계 IO가 왜 프로파일 러보다 높은 읽기를 표시합니까? .
에 관해서는 KB314648 프로파일 통계 IO보다 높은 숫자를보고하는 경우 경우는 OK입니다. 그러나 프로파일 러는 92283
설명 된 쿼리에서 동일한 실행을 읽습니다. 프로파일 러가 작업 파일 / 작업 테이블 읽기를 계산하지 않음을 의미합니까?
2. "작업 테이블"과 "작업 파일"의 차이점
나는 그것을 발견 했다 :
- 작업 파일을 사용하여 해시 조인 및 해시 집계에 대한 임시 결과를 저장할 수 있습니다.
- 작업 테이블을 사용하여 쿼리 스풀, 로브 변수, XML 변수 및 커서에 대한 임시 결과를 저장할 수 있습니다.
그들 사이에 물리적 인 차이가 있습니까?
3.이 특별한 경우에 "작업대"가있는 이유는 무엇입니까?
논리적 읽기가 0 인 경우 왜 작업 테이블이 있습니까? 통계 IO에 필요할 수도 있기 때문에 통계 IO에 포함되어 있습니까 (예상치 못한 경우)?
technet에 있는 설명 이 모호한 것 같습니다 ..
4. Workfile에서 "실제 읽기"란 무엇을 의미합니까?
이는 쿼리에 부여 된 메모리가 충분하지 않아서 쿼리가 실행되는 동안 디스크에 데이터를 기록해야한다는 것을 의미합니까 (해시 일치시 노란색 경고)? 실제 읽기를 통해 통계 IO에서 작업 테이블 / 작업 파일을 볼 때마다 쿼리에 필요한 메모리가 부족하고 쿼리의 일부 중간 결과가 tempdb 디스크에 기록되어야한다고 가정 할 수 있습니까? 그리고 논리적 읽기 만 볼 때마다 RAM이 사용됩니까?
5. 하나의 "작업 파일"은 하나의 목적으로 사용되는 정확히 하나의 테이블을 의미합니까?
하나 이상의 작업 파일 / 작업 테이블이 있으면 어떤 작업 파일이 사용되는지 알 수 없습니까?