2011-03-21 3 views
5

가상 환경에서 실행되는 SQL 2005 DB가 있습니다.성능을 위해 SQL 쿼리의 2 가지 변형을 비교하는 가장 좋은 방법은 무엇입니까?

단순화하기 위해 두 개의 SQL SELECT 쿼리가 있다고 가정 해 봅니다. 둘 다 똑같은 일을합니다. 하지만 성능을 위해 분석하려고합니다.

일반적으로 로컬 DB를 실행하고 일부 데이터를로드하고 타이밍을 사용하여 다른 변형과 비교합니다.

그러나이 경우 DB가 크고 테스트 상자이기 때문에 클라이언트는 다른 VM을 제공하는 호스트에도 배치합니다.

DB가 너무 커서 로컬에서 풀 (pull down) 할 수 없기 때문에 (적어도 현재는) 아웃됩니다.

하지만 내 주요 문제는 서버에 대해 쿼리를 실행하면 타이밍이 다 끝났기 때문입니다. + exact + 동일한 쿼리를 4 회 실행하고 7 초, 8 분, 3 분 45 분 및 15 분의 타이밍을 얻을 수 있습니다.

내 생각에는 SET STATISTICS IO ON이 (가) 사용되었습니다.

그러나 기본적으로 쿼리의 테이블 (임시 테이블, 뷰, 뷰, 조인 등)의 차이에 따라 쿼리가 테이블에서 읽기 및 쓰기 통계를 산출합니다. 골재.

그럼 SET STATISTICS TIME ON을 사용하고 CPU 시간 만 사용하고 있지만 이는 IO를 모두 할인하는 것으로 보입니다. 이는 또한 좋은 기준선을 만들지 않습니다.

제 질문은 이와 같은 상황에서 유용 할 수있는 다른 통계 또는 성능 분석 기법이 있습니까?

+0

* 매우 * 간단한 비교로 쇼 실행 계획과 동일한 일괄 처리에서 둘 모두를 실행할 수 있으며 어느 것이 전체 비율을 최대로 차지하는지 확인할 수 있습니다. – adrianbanks

+0

@adrian 실행 계획은 안내서 일뿐입니다. 예상 서브 트리 비용 A vs B가 실제로 수행 될 때 종종 잘못됨 – RichardTheKiwi

+0

@ 리차드 : 실제 실행 계획을 사용할 때조차도 사실입니까? – adrianbanks

답변

1

STATISTICS IO 정보는 여전히 유용합니다. 읽기, 쓰기 및 스캔의 수가 크게 다를 수 있으므로 어떤 쿼리가 더 나은지 분명하게 알 수 있습니다.

각 쿼리에 대한 실행 계획 정보를 볼 수도 있습니다. 쿼리 -> 예상 실행 계획 표시를 선택하면 SQL Server 견적을 그래픽으로 표시하여 쿼리를 실행할 수 있습니다. 또한 조회 -> 실제 실행 계획 포함을 사용하여 사용 된 실제 계획을 표시 할 수 있습니다.

SET SHOWPLAN_TEXT, SET SHOWPLAN_ALL 또는 SET SHOWPLAN_XML을 사용하여 실행 계획을 포함하여 계획의 텍스트 표시를 볼 수도 있습니다.

실행 계획의 결과를 볼 때 예상 비용 값을보고 각 쿼리의 값을 비교할 수 있습니다. 예상 비용은 각 옵션의 비용을 비교하는 데 사용할 수있는 상대 값입니다.

+0

그래픽 계획을 가지고 작업했지만 비교할 쿼리가 상당히 다를 때 esp가 오렌지와 사과를 비교하는 것처럼 보였습니다. 게다가 그래픽 계획이 상당히 커질 수있을 때 비교하기가 어려웠습니다. ShowPlan_Text를 살펴보면 조금 더 효과적 일 수 있습니다. 전에 그걸 가지고 놀지 않았어. 예상 비용 값에 대해서도 자세히 살펴 보겠습니다. 감사! – DarinH

+0

Bobs에게 허용 된 답변을 제공 하겠지만 좀 더 직접적인 접근 방법이 필요합니다. 그러나 하루가 끝나면 TB 또는 2TB 드라이브를 내 컴퓨터에 설치하여 로컬에서 테스트하고 완료 할 수 있도록하고 있습니다. – DarinH

관련 문제