문제

간단한 질문이지만 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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top