230 likes | 531 Views
SQL Server 2000 세미나 Profiler 를 이용한 문제해결. 강사: 정원혁 http://mssql.ce.ro. 차 례. 문제 해결 기법 프로필러가 뭘까 ? 추적 만들기 추적 분석하기 추적 플래그 사용하기 추적 재생하기. 차 례. 문제 해결 기법 프로필러가 뭘까 ? 추적 만들기 추적 분석하기 추적 플래그 사용하기 추적 재생하기. 문제 해결 기법. 데이터의 확보 병모가지 정확히 찾기 Devide & conquer - 숫자 맞추기 게임
E N D
SQL Server 2000 세미나Profiler를 이용한 문제해결 강사: 정원혁 http://mssql.ce.ro
차 례 • 문제 해결 기법 • 프로필러가 뭘까? • 추적 만들기 • 추적 분석하기 • 추적 플래그 사용하기 • 추적 재생하기
차 례 • 문제 해결 기법 • 프로필러가 뭘까? • 추적 만들기 • 추적 분석하기 • 추적 플래그 사용하기 • 추적 재생하기
문제 해결 기법 • 데이터의 확보 • 병모가지 정확히 찾기 • Devide & conquer -숫자 맞추기 게임 • 자기만의 trouble shooting guide 만들기
차 례 • 문제 해결 기법 • 프로필러가 뭘까? • 추적 만들기 • 추적 분석하기 • 추적 플래그 사용하기 • 추적 재생하기
프로필러 • 서버 및 데이터베이스 동작 모니터- 교착 상태 수, 치명적인 오류, 저장 프로시저 및 Transact-SQL 문 추적, 로그인 동작 • SQL 프로필러 데이터를 SQL Server 테이블이나 파일에 캡처해서 분석가능 • 캡처한 이벤트를 단계별로 재생- 문제 해결- 부하 걸기 시뮬레이션 • SQL 프로필러는 일괄 처리나 트랜잭션 시작과 같은 엔진 프로세스 이벤트를 추적
차 례 • 문제 해결 기법 • 프로필러가 뭘까? • 추적 만들기 • 추적 분석하기 • 추적 플래그 사용하기 • 추적 재생하기
템플릿 • 어떤 것(이벤트, 데이터, 필터)을 추적 할 지 미리 정의해 둔 것 • 나만의 템플릿을 만들어 둘 수도 있다. • 기본 템플릿 그대로 사용하는 것은 과부하를 걸 수 있다.
파일/ 테이블 저장 • 파일 • 기본 5MB 단위로 롤 오버 (최대 1GB) • trace1.trc , trace2.trc, …. • 서버에서 처리 • 테이블 저장 주의 / 대신 나중에 fn_trace_gettable() 를 이용하여 테이블로 변경 • 시작 / 종료 시간 • 저장 안 하면…
이벤트 • 제외: 보안 감사 / 세션 • ExistingConnection • RPC completed • TSQL Batch completed • 경고 • Attention • Exception • Execution Warnings
이벤트 • 잠금 • Lock:Deadlock • Lock:Deadlock Chain • Lock:Timeout • 성능 • Execution Plan • Show Plan All • 프로시저 • SP:CacheHit • SP: ExecContextHit • SP:Recompile
이벤트 • 트랜잭션 • SQLTransaction • TSQL • Exec Prepared SQL • Prepare SQL • 해당 이벤트를 가져와야 특정 정보가 나타난다.
데이터 열 • EventClass • CPU / Duration • Reads/ Writes • TextData • ClientProcessID / SPID • Binary Data • Application Name /Host Name • Database ID • Grouping
필터 걸기 • Min, max 값 지정 가능 (duration, cpu, reads등에 대해)
차 례 • 문제 해결 기법 • 프로필러가 뭘까? • 추적 만들기 • 추적 분석하기 • 추적 플래그 사용하기 • 추적 재생하기
추적 분석 • By duration/ CPU/ reads / writes • By user • Find
추적 분석 • 테이블로 저장 select * into tr1a from tr1 alter table tr1a add sql varchar(3000) update tr1a set sql = convert(varchar(3000), textdata) alter table tr1a drop column textdata select sql, duration, cpu, reads, writes from tr1a order by sql select convert(varchar(80), sql), avg(duration) dr, avg(cpu) c, avg(reads) r, avg(writes ) w from tr1a group by convert(varchar(80), sql)
차 례 • 문제 해결 기법 • 프로필러가 뭘까? • 추적 만들기 • 추적 분석하기 • 추적 플래그 사용하기 • 추적 재생하기
dbcc traceon() • 추적 플래그 설정된 모든 연결에 적용 • 부작용 주의 • DBCC TRACEOFF • TRACESTATUS • 1204 / 1205 • 3604 / 3605 • 8602 / 모든 인덱스 힌트의 사용을 무시 • 8755 / 모든 잠금 힌트를 무시 • 8722 / 모든 종류의 힌트(OPTION절에서 사용되는 힌트들) 무시
차 례 • 문제 해결 기법 • 프로필러가 뭘까? • 추적 만들기 • 추적 분석하기 • 추적 플래그 사용하기 • 추적 재생하기
추적 재생 • Stpe by step • 한꺼번에 (부하 걸기) • 실제로 수행 • db context / login, user context/ password/ permission 등이 맞아야 제대로 재생
추적 재생 • SQLProfilerTSQL_Replay 템플릿 사용 • 재생 결과를 표시 : 안 하면 재생 속도 더 빠르다 • 추적 파일 / 추적 테이블 모두 재생 가능