SQL 통계 IO 스캔 횟수 설명
-
22-07-2019 - |
문제
간단한 질문이지만 Google에서 좋은 설명을 찾지 못했습니다.Set Statistics IO ON을 사용하면 Management Studio의 메시지 창에 논리적 읽기 및 스캔 횟수가 제공됩니다.만약 내가 가지고 있다면:
tbl예제, 스캔 횟수 5, 논리적 읽기 20
스캔 횟수는 무엇을 의미합니까?
해결책
책에서
스캔 수 :수행 된 인덱스 또는 테이블 스캔 수.
논리적 읽기 :데이터 캐시에서 읽은 페이지 수입니다.
물리적 읽기 :디스크에서 읽은 페이지 수.
읽기 읽기 읽기 :쿼리의 캐시에 배치 된 페이지 수
여기 참조 : http://technet.microsoft.com/en-us/library/ms184361.aspx
다른 팁
"테이블 스캔"까지 수단, 내가 찾을 수있는 가장 좋은 것은 이것입니다.
스캔 카운트는 단순히 쿼리 중에 테이블이나 인덱스에 액세스 한 횟수를 의미합니다. 전체 스캔, 부분 스캔 또는 단순히 추구 일 수 있습니다.
다시 말해서, 스캔 카운트 그 자체 만 정보가 충분하지 않습니다 계속하려면. 그 스캔이 정확히 무엇인지 알아야하므로 자세한 내용은 실제 실행 계획을 살펴 봐야합니다. 결론적으로 그것은 그 자체로는 매우 유용한 지표가 아닙니다!
또한 :
http://www.eggeadcafe.com/software/aspnet/32171165/set-statistics-io-scan-count-explanation.aspx
안타깝게도, 요즘 스캔 수는 그다지 유익하지 않습니다. HM, 19223과 같은 숫자가 보이면, 테이블은 아마도 중첩 루프 조인을 통해 여러 번 액세스했을 것입니다.
"스캔 카운트"는 단순히 "Times Table에 액세스 된"것을 의미했을 때가 있었지만 오래 전부터 SQL 6.5에있을 수 있습니다. 0의 정의로 스캔 수를 얻을 수있는 유일한 시간은 쿼리와 같은 것입니다.
select * from TestA1 where CompanyID = 1 and CompanyID = 2
... SQL Server가 테이블에 액세스하지 않고 쿼리가 행을 반환하지 않는다고 결론을 내릴 수 있습니다.
MSDN 인용을 계속 수집하는 경우. 그런 다음 [1] [2]에서 반복됩니다.
"논리적 읽기
이 값은 쿼리를 처리하는 데 필요한 총 페이지 액세스 수를 나타냅니다. 모든 페이지 데이터 캐시에서 읽히면 해당 페이지가 디스크에서 캐시로 가져와야하는지 여부에 관계없이 주어진 읽기에 대해 캐시. 이 값은 항상 적어도 크고 일반적으로 물리적 읽기 값보다 큽니다. 같은 페이지를 여러 번 읽을 수 있으므로 (예 : 쿼리가 인덱스에서 구동 될 때와 같이) 테이블의 논리적 판독 횟수는 테이블의 페이지 수보다 클 수 있습니다.물리적 읽기
이 값은 디스크에서 읽은 페이지 수를 나타냅니다. 그것은 항상 논리적 판독 값의 가치보다 작거나 동일합니다. Performance Monitor에 표시된 버퍼 캐시 적중률의 값은 논리 판독 값에서 계산되고 물리적 판독 값은 다음과 같이 계산됩니다.미리 읽기 읽기
앞서 읽기 읽기 값은 쿼리가 처리되는 동안 읽기 미리 메커니즘을 사용하여 캐시에 읽은 페이지 수를 나타냅니다. 이 페이지가 쿼리에서 반드시 사용되는 것은 아닙니다. 페이지가 궁극적으로 필요한 경우 논리적 읽기가 계산되지만 물리적 읽기는 그렇지 않습니다. 높은 값은 물리적 판독 값이 아마도 낮고 캐시 치지 비율이 아마도 더 높다는 것을 의미합니다 ... [VGV8에 의해 자르기스캔 카운트
스캔 카운트 값은 해당 테이블에 액세스 한 횟수를 나타냅니다. 중첩 루프 조인의 외부 테이블은 스캔 카운트가 1입니다. 내부 테이블의 경우 스캔 수는 테이블에 액세스 한 "루프를 통해"횟수 일 수 있습니다. 논리 판독 횟수는 스캔 수의 합이 각 스캔에서 액세스하는 페이지 수의 합으로 결정됩니다. 그러나 중첩 루프 조인의 경우에도 내부 테이블의 스캔 카운트는 1으로 표시 될 수 있습니다. SQL Server는 내부 테이블에서 필요한 행을 캐시의 작업 테이블로 복사 하고이 작업용을 사용하여 실제 데이터 행에 액세스 할 수 있습니다. 이 단계가 계획에 사용되면 통계 IO 출력에 종종 표시가 없습니다. 쿼리 실행과 관련된 실제 작업을 결정하려면 통계 시간의 출력과 사용 된 실제 처리 계획에 대한 정보를 사용해야합니다. 해시 결합 및 합병 결합은 일반적으로 조인에 관련된 두 테이블에 대해 스캔 수가 1으로 표시되지만 이러한 유형의 조인은 실질적으로 더 많은 메모리를 포함 할 수 있습니다. 쿼리가 실행되는 동안 sysprocesses의 구마 값을 검사 할 수 있지만 Physical_io 값과 달리 누적 카운터가 아니며 현재 실행중인 쿼리에만 유효합니다. 쿼리가 완료되면 메모리가 얼마나 많이 사용되었는지 알 수있는 방법이 없습니다. "
[1]
제 4 장 쿼리 성능 문제 해결. 모니터링 쿼리 성능
Microsoft® SQL Server ™ 내부 2005: 쿼리 튜닝 및 최적화
Kalen Delaney
게시자 : Microsoft Press
술집 날짜 : 2007 년 9 월 26 일
ISBN-10 : 0-7356-2196-9 인쇄
ISBN-13 : 978-0-7356-2196-1 인쇄
페이지 : 448
[2]
모니터링 쿼리 성능
쿼리 성능을 최적화합니다
Ron Soukup, Kalen Delaney
Microsoft Press가 게시 한 Microsoft SQL Server 7.0 내부에서 14 장
http://technet.microsoft.com/en-us/library/cc917719.aspx#ecaa
여기에 대한 매우 포괄적인 요약이 있습니다.
스캔 카운트를 무시하면 중요하지 않습니다. 논리적 읽기를 낮추는 방법에 중점을 둡니다. 기반 http://www.practicalsqldba.com/2013/07/sql-server-performance-tuning.html.