쿼리 성능을 가장 잘 측정하려면 어떻게합니까?


19

두 개의 저장 프로 시저가 있는데 두 번째 저장 프로 시저는 첫 번째 저장 프로 시저입니다.

나는 그것이 얼마나 개선되었는지 정확하게 측정하려고합니다.

1 / 측정 시간 clock time이 달라지면 측정 이 옵션으로 보이지 않습니다. 때로는 두 번째 저장 프로 시저의 실행 시간이 첫 번째 프로 시저의 실행 시간보다 큰 경우가 있습니다 (때로는 드물지만 발생합니다).

2 / Include client statistics는 또한 다른 결과를 제공합니다.

3 / DBCC DROPCLEANBUFFERS, DBCC FREEPROCCACHE좋지만 같은 이야기 ...

4 / SET STATISTICS IO ON는 옵션이 될 수 있지만 저장 프로 시저에 관련된 테이블이 많을 때 어떻게 전체 점수를 얻을 수 있습니까?

5 / Include actual execution plan도 옵션이 될 수 있습니다. 나는 얻을 estimated subtreecost두 번째의 첫 번째 저장 프로 시저에 대한 0.3253 및 0.3079의를. 두 번째 저장 프로 시저가 6 % 빠르다고 말할 수 있습니까 (= 0.3253 / 0.3079)?

6 / SQL Server 프로파일 러에서 "읽기"필드를 사용합니까?

따라서 두 번째 저장 프로 시저가 실행 조건 (서버의 작업 부하, 이러한 저장 프로 시저가 실행되는 서버 등)에 관계없이 첫 번째 프로 시저보다 x % 빠르다고 어떻게 말할 수 있습니까?

가능하지 않은 경우 두 번째 저장 프로 시저가 첫 번째 저장 프로 시저보다 실행 시간이 더 좋다는 것을 어떻게 알 수 있습니까?

답변:


17

전과 후 시나리오를 비교할 때 SQLQueryStress 무료 도구 를 사용하고 싶습니다 . SQLQueryStress를 사용하면 각 저장 프로 시저를 원하는만큼 실행할 수 있으며 모든 실행에 대한 총 평균 통계를 얻을 수 있습니다.

예를 들어, 각 저장 프로 시저를 100 번 실행 한 다음 통계를 사용하여 개선 사항을 백업 할 수 있습니다. "100 번이 넘는 실행에서 개선 사항은 총 30 초를 절약하고 저장된 프로세스는 실행 당 1500 번의 읽기를 줄입니다." 나는 당신이 아이디어를 얻는다고 생각합니다.

저장된 프로 시저에 매개 변수가있는 경우 개선 사항이 여러 가지 다른 매개 변수 세트에서 작동하는지 항상 재확인하는 것이 좋습니다. SQLQueryStress는 쿼리에서 매개 변수를 대체하여 저장된 proc이 어떻게 수행되는지에 대한 전반적인 그림을 더 잘 볼 수있게 해주는 멋진 기능을 수행합니다.

SQLQueryStress 설명서 : http://www.datamanipulation.net/sqlquerystress/documentation/documentation.asp

SQLQueryStress



3

두 개의 저장 프로 시저에 대해 며칠 동안 실행 시간을 수집 한 경우이 홈페이지를 사용하는 것이 좋습니다.

http://www.evanmiller.org/ab-testing/t-test.html

그들이 실제로 다른지 확인합니다.

저장 프로 시저 개선과 관련하여 6 %의 차이는 그다지 들리지 않습니다. 나는 동료로부터 두 자릿수를 기대하게되었고, 그가 한 자릿수 만 달성하면 실망하는 척합니다 ...

그는 솔루션이 더 빨리 작동한다는 것을 증명하기 위해 EvanMiller 홈페이지를 사용할 필요가 없습니다.

또한 실행 계획을 비교하기 위해 훨씬 향상된 도구이므로 http://www.sqlsentry.com/ 에서 SQLSentrys (edit :) 계획 탐색기를 설치 합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.