'성능관리'에 해당되는 글 1건

  1. 2007/03/09 글뻥 MSSQL 과부하 걸릴때 조치
SQL만 공부들 하시느라 그런지 MSSQL이나 오라클 등이 나자빠질정도로 과부하가 걸려도 아무렇지도 않다는 듯이 무관심한 사람들이 꽤 있다. 그러지말자. 그덕에 나같은 사람들 출장다녀야 하니 짜증 짬뽕이다.

가장 많이 접하는 경우를 예로 들면 테이블에 인덱스 안걸고 쿼리문에는 where조건 미친 프로그래머들이다.
나도 개발하지만 미친 프로그래머들땜시 RX8620의 CPU가 풀나는 아주 웃기지도 않는 사건이 있다.
그럴때는 차분히 다음과 같이 하자.

1. 먼저 MSSQL의 "프로필러"를 실행하라.
사용자 삽입 이미지

2. 정보를 수집하라
- 다른곳은 그대로 두고 "추적속성"에 "이벤트"탭만 설정한다.
사용자 삽입 이미지

3. 수집된 정보를 분석하라.
- "CPU"와 "Duration" 2개 필드가 높은넘부터 Sort하여 정렬한다. 예제에서는 그런넘이 없어 아쉽지만 참고만하자.
사용자 삽입 이미지

4. 가능성 있는 용의자를 확인했으면 테스트하자
- begin tran ~ rollback 사이에 용의자(쿼리)를 집어넣고 "CTRL+L"을 눌러 실행계획을 보자
- 실행계획에 가는 실선이 아닌 굵은 선으로 된부분을 따라가다보면 다음과 같이 나온다.
- 예제에서는 풀스캔하고 있다... ㅡㅡ;;
사용자 삽입 이미지

5. 이제 제대로 바꿔놓자
- 인덱스를 추가해놓자
사용자 삽입 이미지

6. 결과
- 적용 5분후 결과이다.
사용자 삽입 이미지
- 최종 10분후의 CPU사용율이다.
사용자 삽입 이미지

* 본사례는 H대학교 시스템에서 발생했던 부하에 대해 조치한 것을 리포트형식을 빌어 기록해둔것이다.
* 처음 추적을 시작할때 필터를 걸면 원하는 것을 얻어 낼 수도 있지만 DB에 넣어 원하는 바를 얻고싶다면 SQL에서 생성한 파일을 직접 import할 수도 있다.
SELECT * INTO tbltr
FROM ::fn_trace_gettable('D:\tmp\파일명.trc', default) 
2007/03/09 11:11 2007/03/09 11:11