데이터를 출력하지 않고 SQL Server MGMT Studio에서 성능을 테스트하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/1240051

  •  11-09-2019
  •  | 
  •  

문제

SQL Server Management Studio 사용.

결과 창이 내 테스트에 영향을 미치지 않고 대형 선택 (600k 행)의 성능을 어떻게 테스트 할 수 있습니까? 두 쿼리가 둘 다 같은 장소로 출력되기 때문에 모든 것이 동일하지 않습니다. 그러나 테스트주기 속도를 높이고 싶습니다. SQL Server Management Studio의 출력 설정이 제대로 진행되고 있다고 생각합니다. 텍스트로의 출력은 현재 사용하고있는 것이지만 더 나은 대안을 기대하고 있습니다.

데이터베이스가 내 로컬 상자에 있기 때문에 이것이 내 번호에 영향을 미치고 있다고 생각합니다.

편집 : 여기에서 1 = 0을 수행하는 것에 대한 질문이 있었지만 (조인이 발생하지만 출력이 없다고 생각) 테스트했지만 작동하지 않았습니다. 쿼리 성능의 유효한 표시기가 아닙니다.

도움이 되었습니까?

해결책

당신은 할 수 있습니다 SET ROWCOUNT 1 쿼리 전에. 그것이 당신이 원하는 것이 정확히 확실하지 않지만 많은 데이터가 반환 될 때까지 기다릴 필요가 없으므로 정확한 계산 비용을 제공합니다.

그러나 당신이 있다면 쿼리에 클라이언트 통계를 추가하십시오, 숫자 중 하나는 서버 응답의 대기 시간으로 네트워크를 통해 데이터를 전송하는 데 걸리는 시간을 포함하지 않고 서버 계산 시간을 제공합니다.

다른 팁

당신은 할 수 있습니다 통계 시간을 설정하십시오 서버에서 시간을 측정합니다. 그리고 당신은 쿼리를 사용할 수 있습니다.클라이언트 통계를 포함합니다 SSM의 (Shift+Alt+S) 클라이언트 시간 사용에 대한 세부 정보를 얻으십시오. SQL 쿼리는 실행되지 않는 다음 완료되면 클라이언트에 결과를 반환하지만 대신 실행됩니다. ~처럼 통신 채널이 가득 차면 결과를 반환하고 실행을 중단시킵니다.

쿼리가 결과 패킷을 클라이언트로 다시 전송하는 것을 완전히 무시하는 유일한 컨텍스트는 활성화입니다. 그러나 출력을 클라이언트에게 반환 할 시간도 성능을 측정 할 때 고려해야합니다. 자신의 고객이 SSM보다 빠를 것이라고 확신합니까?

SET ROWCOUNT 1 첫 번째 행이 반환 된 후 처리를 중지합니다. 즉, 계획에 차단 연산자가 없으면 결과는 쓸모가 없습니다.

사소한 예를 취합니다

SELECT * FROM TableX

실제로이 쿼리 비용은 TableX.

사용 SET ROWCOUNT 1 그 중 어느 것도 보여주지 않습니다. 여부에 관계없이 TableX 첫 번째 행이 반환 된 후 1 행 또는 10 억 행을 가지고 있습니다.

나는 종종 그것을 할당한다 SELECT 결과를 표시하여 SSM에 의해 속도를 늦추지 않고 논리적 판독과 같은 것을 볼 수있는 변수에 대한 결과.

  SET STATISTICS IO ON
  DECLARE @name nvarchar(35),
          @type nchar(3)

  SELECT @name = name, 
         @type = type
  FROM master..spt_values

관련 연결 항목 요청이 있습니다 SSMS 및/또는 TSQL에서 "서버에서 결과 파괴"옵션 제공

결과를 출력하지 않으면 어떻게 쿼리 성능을 테스트 할 수 있습니까? 테스트가 쿼리의 수행 방법에 대해 아무것도 말하지 않으면 테스트 속도를 높이는 것은 무의미합니다. 쿼리의 개를 알고 싶습니까? 데이터를 Prod로 푸시 한 후 데이터를 반환하는 데 10 분이 걸리나요?

물론 600,000 개의 기록을 반환하는 데 시간이 걸릴 것입니다. 사용자 인터페이스에서도 정보가 네트워크를 가로 질러 이동해야하기 때문에 쿼리 창보다 더 오래 걸릴 것입니다.

당신이 할 수있는 가장 좋은 방법은 쿼리 실행 계획을 확인하는 것입니다 (누름 Ctrl 키+) 실제 쿼리의 경우. 그것은 당신에게 가능한 성능에 대한 최고의 추측을 줄 것입니다.

나는 그것이 어디에 있는가를 생각한다 WHERE 1=0 관리 스튜디오가 아닌 SQL Server 측에서 확실히 일어나고 있습니다. 결과는 반환되지 않습니다.

MGMT 스튜디오를 실행하는 것과 동일한 기계의 DB 엔진입니까?

당신은 할 수 있습니다 :

  • 텍스트로 출력 또는
  • 파일에 출력.
  • 쿼리 결과 창을 닫습니다.

그것은 MGMT 스튜디오에서 그리드를 그리는 데 소비 된주기를 움직일뿐입니다. 아마도 텍스트에 대한 부끄러움은 전체적으로 더 성능이있을 것입니다. 창을 숨기면 데이터를 그려야하는 MGMT Studio의 사이클을 절약 할 수 있습니다. 여전히 MGMT 스튜디오로 반환되고 있으므로 실제로 많은주기를 절약하지 못합니다.

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