SQL 추적 최적화

적용 대상:SQL Server

SQL 추적을 실행하면 시스템 리소스를 사용하여 데이터를 수집하기 때문에 성능 비용이 발생하지만, 이를 최소화하기 위해 많은 작업을 수행할 수 있습니다. 추적에 의해 발생하는 성능 비용을 최소화하려면 다음을 시도합니다.

  • 명령 프롬프트를 사용하여 추적을 실행하는 것이 좋습니다. 그래픽 사용자 인터페이스를 사용하면 성능이 저하됩니다. 자세한 내용은 sp_trace_create(Transact-SQL)를 참조 하세요.

  • 자주 발생하는 이벤트를 포함하지 않습니다. 가능하면 특정 이벤트 클래스와 필터를 사용하여 추적 범위를 좁힙니다. 수집되는 추적 이벤트가 적으면 추적을 지원하는 데 필요한 시스템 리소스 수가 줄어듭니다.

  • 추적을 집중하여 관련 데이터를 제공하는 이벤트만 수집합니다. 예를 들어 추적이 교착 상태를 식별하는 경우 Lock:Deadlock 이벤트 클래스를 포함하지만 Lock:Acquired 이벤트 클래스는 포함하지 않습니다. 두 이벤트 클래스를 모두 포함하는 경우 추적은 획득된 모든 잠금에 응답해야 하며 실행 비용이 두 배로 증가합니다.

  • 중복 데이터를 수집하지 않습니다. 예를 들어 SQL:BatchStarted 및 SQL:BatchCompleted를 수집하는 경우 SQL:BatchStarted 이벤트 클래스에 대해서만 텍스트 데이터를 수집하여 결과 집합의 크기를 최소화할 수 있습니다.

  • 추적 정의에 필터를 사용합니다. 예를 들어 특정 사용자가 임시 쿼리 중에 성능 저하를 보고하는 경우 LoginName에 필터를 만듭니다. LoginName해당 사용자 이름과 일치하는 이벤트만 포함하도록 필터를 설정합니다.

성능에 큰 영향을 주는 이벤트에 대한 추적을 실행해야 하는 경우 다음 방법 중 하나를 사용하여 서버에 미치는 성능 영향을 제한하는 것이 좋습니다.

  • 짧은 기간 동안 추적을 실행합니다. 중지 시간을 사용하도록 설정하여 추적이 실행되는 시간을 제어할 수 있습니다. 이는 이벤트 클래스를 제한하거나 이벤트를 필터링할 수 없는 경우에 특히 중요합니다. 중지 시간을 사용하도록 설정하면 발생한 성능이 무기한 지속되지 않습니다.

  • 추적 결과의 크기를 제한합니다. 추적 결과의 크기를 최대 파일 크기로 제한할 수 있습니다. 이 전략은 파일 크기 제한에 도달할 때(파일 롤오버를 사용하지 않는 경우) 성능 비용이 중지되도록 합니다.

  • 반환되는 이벤트 수를 제한합니다. SQL Server Profiler를 사용하면 추적을 테이블에 저장하고 최대 행 수를 설정하여 반환되는 이벤트 수를 제한할 수 있습니다. 최대 행 수에 도달한 후에도 추적 결과가 SQL Server 프로파일러 화면으로 반환되지만 결과를 테이블에 기록하는 비용은 제거됩니다.

참고 항목

추적 필터링