2010. 6. 4. 01:17
Profiler
2010. 6. 4. 01:17 in Common Admin
Profiler
- 서버 및 데이터베이스 동작 모니터, 교착상태수, 치명적인 오류, 저자으로시저 및 Transact-SQL 문 추적, 로그인 동작 확인
- SQL 프로필러 데이터를 SQL Server 테이블이나 파일에 캡처해서 분석가능
- 캡처한 이벤트를 단계별로 재성
- SQL 프로필러는 일괄처리나 트랜잭션 시작과 같은 엔진 프로세스 이벤트를 추적할 수 있다.
템플릿
- 나만의 템플릿을 만들어서 필요한 부분만 보자.
- 이벤트 에서는 보안 감사/세션 정보는 제외해도 무관
- 경고>> Execution Warnigs 는 성능에 나쁜 영향을 줄때 프로시저 내에서 발생하는 모든 에러를 반환한다. 한번씩 잡아 보는것도 괜찮다.
- 기본1.tdf : 기본에 충실한 추적 템플릿
이벤트 범주
- 저장프로시저 범주 : 저장프로시저 생성으로 발생하는 이벤트 컬랙션
- 이벤트 클래스와 열의 상관 관계, 해당 이벤트를 가져와야 특정 정보가 발생한다.
- TSQL: 클라이언트로부터 SQL Server 인스턴스로 전달되는 Transact-SQL 문을 실행함으로 생성되는 이벤트 클래스 컬렉션입니다.
- 참고) 둘다 Batch가 아니라 단건을 해야 NestLevel, ObejctID를 가져올 수 있다. 이게 Read80Trace에서 있어야 분석이 가능한것 같음.
- 잠금: 잠금을 얻거나 취소, 해제 시 생성되는 이벤트 클래스의 컬렉션입니다.
- 잠금은 자주 발생하기 때문에 잠금 이벤트를 캡쳐하면 추적되는 서비스에 중대한 오버해드를 발생 할 수 있다.
Profiler 바로가기 키
Ctrl+Shift+Delete | 추적 창 지우기 |
Ctrl+F4 | 추적 창 닫기 |
- | 추적 그룹화 축소 |
Ctrl+C | 복사 |
Alt+Delete | 추적 삭제 |
+ | 추적 그룹화 확장 |
Ctrl+F | 찾기 |
F3 | 다음 항목 찾기 |
Shift+F3 | 이전 항목 찾기 |
F1 | 사용 가능한 도움말 표시 |
Ctrl+N | 새 추적 열기 |
Alt+F7 | 설정 재생 |
Ctrl+F10 | 커서까지 실행 |
F5 | 재생 시작 |
F11 | 단계 |
Shift+F5 | 재생 중지 |
F9 | 중단점 설정/해제 |
파일/테이블 저장
추적파일을 테이블에 저장할 수 있다. 파일로 저장해서 쿼리로 문제가 되는 부분을 필터링해서 개체를 찾는데 도움이 된다.
select * from ::fn_trace_gettable('D:\gettable_test.trc',default)
SELECT IDENTITY(int, 1, 1) AS RowNumber, * INTO #temp_trc
FROM ::fn_trace_gettable('D:\gettable_test.trc', default)
SELECT * FROM #temp_trc
- 분석하기
ALTER TABLE #temp_trc ADD sql varchar(6000) : TextData는 text 타입이므로 정렬에 사용할 수 없으므로 변경
UPDATE #temp_trc SET sql = convert(varchar(6000), TextData)
select convert(varchar(80), sql), count(*) 횟수, avg(duration) dr, avg(cpu) c, avg(reads) r, avg(writes ) w
from #temp_trc
group by convert(varchar(80), sql)
order by count(*) desc
Profiler 스크립트로 실행하기
- 프로필러를 스크립트로 실행할 수 있다. UI로 실행하게 되면 아무래도 부하가 걸린다.
- 필요한 이벤트, 컬럼을 지정해서 가능하다. 쉽게 하기 위해서는 자주 쓰는 템플릿을 불러와서 파일>>추적스크립트를 실행해서 변환을 하면 스크립트가 생성된다.
- 추적은 다음과 같은 순서로 실행하면 된다.
- sp_trace_create: Trace를 생성한다.
- sp_trace_setevent: 해당 Trace에 이벤트와 컬럼 명을 지정한다.
- sp_trace_setfilter: 필터를 지정해서 원하는 값만 볼수 있다.
- 추적이 실행되고 나서 상태확인/중지
- fn_trace_getfilterinfo : TraceId 정보를 확인할 수 있음
- sp_trace_status @TraceId, 0 : 추적중지 -> sp_trace_status @TraceId, 2 : 추적 삭제
- 스크립트 저장프로시저로 만들기
이 글은 스프링노트에서 작성되었습니다.
'Common Admin' 카테고리의 다른 글
SQL Server의 Procedure Cache 사이즈 (0) | 2010.06.04 |
---|---|
Admin::master db rebuild 방법 (0) | 2010.06.04 |
문서화되지 않은 프로시저 (0) | 2010.06.04 |
Raid구성성능 (0) | 2010.06.04 |