SQL 프로파일 러가 서버 성능에 영향을 줍니까?


11

SQL Server 2008이 약간의로드로 인해 실패하는 문제에 직면하고 있습니다. 로드 사례를 찾아서로드를 처리 할 수 ​​있도록 코드를 최적화해야합니다. 인터넷에서 SQL 프로파일 러를 사용하여 데이터베이스 상호 작용을 추적하여 나중에 문제가 발생한 정확한 지점을 찾기 위해 분석 할 수 있음을 발견했습니다. 또한 SQL 프로파일 러를 시작하는 방법에 대해서도 알았습니다. 그러나 이제 내 질문은 SQL 프로파일 러를 시작하여 서버 성능에 영향을 미칠 것인가입니다.


5
예. 실행 방법과 위치에 따라 다릅니다. 적은 양의 추가로드만으로 올바른 방법을 수행 할 수 있습니다.
Mitch Wheat

3
확장 이벤트는 더 가벼운 옵션 일 수 있습니다.
마틴 스미스

답변:


10

SQL Server 프로파일 러는 클라이언트 쪽을 통해 SQL Server 추적을 사용하는 GUI입니다. 이러한 특성으로 인해 환경에 따라 성능에 약간의 영향이있을 수 있습니다.

SQL Server 프로파일 러는 주로 서버에서 발생하는 상황을 신속하게 파악하는 데 적합합니다 (데이터베이스 서버가 추가 대기 시간을 처리 할 수있는 경우). 장시간 실행하지 마십시오. 더 긴 추적의 경우 서버 측 추적 또는 확장 이벤트를 사용하십시오.


많은 요인에 따라 매우 짧은 프로파일 러 추적도 +1해도 서버가 손상 될 수 있습니다.
Aaron Bertrand

3

서버 측 추적 을 사용하면 성능에 대한 영향을 최소화 할 수 있습니다.


내 서버와 데이터베이스가 동일한 컴퓨터에 설치되어 있습니다. 이제 "Microsoft SQL 관리 스튜디오-> 도구-> SQL 프로파일 러"를 통해 SQL 프로파일 러를 시작하면 성능 저하가 어느 정도이며 어떤 요인에 따라 달라질 수 있습니까?

서버 사용량이 많고, 추적이 구성되는 이벤트 수와 열 수 및 필터링을 기반으로합니다. 필터링은 양방향으로 영향을 줄 수 있습니다. 한 가지 방법으로 UI에 반환되는 행 수를 줄일 수 있습니다 (실제로 프로파일 러가 서버 쪽 추적보다 더 많은 부분을 아프게하는 부분). 반면에 잘못 선택하면 필터 (예 :) textdata LIKE '%foo%'는 반대 효과를 가질 수 있습니다. 마법의 기대치를 제공하기에는 너무 많은 변수가 있으므로 시도해보아야합니다. 그래도 서버 측 추적을 사용해야합니다.
Aaron Bertrand

원본에 액세스 할 수 없으면 링크를 사용해보십시오 .
Marc Lopez

3

이전 포스터가 말한 모든 것이 정확합니다. 프로파일 러는 한 시점에서 DMO를 사용했으며 이제는 SMO를 사용하여 추적 이벤트를 캡처하는 응용 프로그램입니다. 이것은 단순히 서버 측 추적을 사용하는 것에 비해 엄청난 양의 오버 헤드를 추가합니다.

SMO는 클라이언트 응용 프로그램 인 Profiler와 함께 추적 프로세스에 추가 "계층"을 추가하는 API입니다. 서버 측 추적은 트랜잭션 큐에서 직접 추적 이벤트를 읽으므로 그 결과 오버 헤드는 무시할 수 있습니다.

초당 10,000 개 이상의 트랜잭션을 처리하는 SQL Server 환경에서 서버 쪽 추적을 실행할 수있었습니다. 동일한 환경에서 프로파일 러를 사용하면 데이터베이스 인스턴스가 무너질 수 있습니다. 모든 프로덕션 환경에서 데이터베이스 활동을 추적해야하는 경우 항상 서버 측 추적을 사용하십시오. 프로파일 러는 데이터베이스 인스턴스를 종료합니다.


2

예. SQL Server 프로파일 러는 성능에 영향을줍니다.

GUI를 사용하여 추적하면 모든 이벤트가 동 기적으로 처리 및 필터링되므로 서버로드, 네트워크 대기 시간, 수집 한 이벤트 및 수집 된 이벤트가 저장된 위치와 같은 요소가 모두 오버 헤드에 기여합니다.

다른 답변에서 제안했듯이 GUI 대신 서버 측 추적을 사용하는 것이 좋습니다. 그러나,이 방법이 사용되지확장 이벤트는 대신 사용해야합니다. (참고 : 추적보다 가벼운 확장 이벤트를 사용하더라도 서버에 바람직하지 않은 양의로드를 추가 할 수 있습니다. 이벤트를 설정할 때 오버 헤드를 최소화하는 방법에 대해서는 두 번째 단락의 목록을 참조하십시오. 세션.)

로드가 많은 서버의 경우 측정 프로세스 자체가 조사중인 문제에 영향을 줄 수 있으므로 수집되는 정보에 매우주의해야합니다.


0

SQL Server 프로파일 러는 두 단계로 작동합니다. 먼저 모든 쿼리를 기록하도록 지시합니다. 그런 다음 일반적인 트랜잭션을 실행하십시오 (또는 프로덕션에 대해 로그하도록하십시오). "테스트로드"가 생성됩니다. 그런 다음 테스트로드를 사용하여 실제 프로파일 링 (분석)을 수행합니다.

로깅 자체는 쿼리 비용과 비교할 때 비용이 많이 들지 않습니다.


내 서버와 데이터베이스가 동일한 컴퓨터에 설치되어 있습니다. 이제 "Microsoft SQL 관리 스튜디오-> 도구-> SQL 프로파일 러"를 통해 SQL 프로파일 러를 시작하면 성능 저하가 어느 정도이며 어떤 요인에 따라 달라질 수 있습니까?
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.