2012-05-03 3 views
2

SQL Server 2008을 사용하고 있습니다. sproc을 실행하고 실행 계획을 포함 할 때 인덱스가 누락 되었다면 SQL Server에 경고가 표시되고 순서대로 추가 할 것을 권장합니다. sproc의 성능을 향상시킵니다.자동화 된 테스트를위한 SQL Server 실행 계획 벤치마킹?

필자에게 필자는 자동화 된 테스트를 통해 성능이 더 중요한 sprocs 중 일부를 실행 한 다음 XML로 실행 계획을 포함시키는 것이 바람직하다고 생각합니다. 그런 다음 XML 계획을 구문 분석하여 SQL Server에서 보낸 경고 또는 경고를 찾습니다. 마주 치면 테스트 실패로 간주됩니다. 나는 그것을 한 걸음 더 나아갈 수 있었고, 마지막으로 쿼리를 실행 한 이후 쿼리 비용이 많이 들었을 때 실패를 던질 수는 있었지만 지금은 간단하게 유지하고 있습니다.

누군가가 이미 해본 것처럼 보이지만 인터넷 검색으로는 아무 것도 볼 수 없습니다. 자동화 된 성능 테스트/벤치마킹을위한 합리적인 접근 방식입니까? 그렇다면 기존의 도구 나 프레임 워크를 사용하면 쉽게 구현할 수 있습니까?

감사합니다,

Tedderz

+1

본 적이 있습니까? http://sqlblog.com/blogs/joe_chang/archive/2011/02/06/free-tools-for-sql-server-automating-execution-plan-analysis.aspx –

답변

2

나는이에 대해 조언한다. 옵티 마이저에 의해 식별 된 누락 된 인덱스는 매우 근시입니다. 즉, 전체 시스템을 고려하지 않고이 쿼리에 도움이되는 인덱스를 제안하지만 DML의 성능을 좌우할 수 있습니다. 당신의 마음이 올바른 위치에있는 동안, 지수 분석은 과학보다 예술적입니다 (비록 후자가 이전에 알려줄 수 있고 알려야 만합니다).

1

이 문제에 대한 조언이 유효합니다. 필자는 누락 된 인덱스 dmv가 동일한 것을 모두 수정하는 6 가지 인덱스를 추천한다고 보았습니다. 클러스터 된 키를 포함 된 열로 추가하는 것이 좋습니다 (클러스터 된 키는 항상 인덱스에 있으므로 실제로 이상합니다). 이미 존재하는 지표를 추천하는 것을 보았습니다. 결코이 지수를 적용하지 마십시오. 나는 당신이 누락 된 인덱스 dmv로 시작하는 것이 더 좋을 것이라고 생각합니다. 더 철저히 조사하는 것이 타당한 지표를 찾는 것 (영향력이 크다). 그런 다음 xml에 해당 인덱스를 권장하게 만든 procs를 쿼리하십시오. 나는 그렇게하기가 힘듭니다. 우리는 매일 계획 캐시를 비 웁니다. 그리고 9K procs 및 기존 응용 프로그램에서 인라인 SQL 톤을 사용하면 xml을 구문 분석하는 데 걸리는 시간이 길어집니다.
또는 proc stats dmv (sys.dm_exec_procedure_stats) 및 query stats dmv (sys.dm_exec_query_stats)에서 시작하십시오. 평균 소요 시간, CPU 및 I/O 측면에서 최악 인 프로세스를 찾습니다. 서브 세트에 누락 된 인덱스가 있는지 확인하십시오 (그리고 쿼리 자체도 잘 살펴보십시오). 일단 완료되면 procs/queries를 수행 할 수는 있지만 괜찮 으면 수행 할 수 있습니다. 눈에 띄는 시스템 영향을 미칩니다.
나는 매일 perf 통계를 수집하고 다른 카테고리 (총 CPU, 평균 CPU 등)의 묶음에 대한 상위 20 개 최하위 procs의 요약 테이블을로드합니다. proc이 목록을 작성하기에 충분할만큼 성능을 ​​변경하는시기를 알기 쉽고, 성능 저하로 인한 조정 노력의 영향을 확인할 수 있습니다.