Creative Commons License

Software Dev

프로그래밍기본
객체지향
프로젝트관리
알고리즘
데이타베이스

소프트웨어 개발에 필수적이고 필요한 주제에 대한 강의 및 공유

.

데이타베이스

Database 관련 기술을 다룹니다. 주로 MSSQL 기반이 될 것입니다. 비지니스 응용 개발자에게 DB 는 뗄 수 없는 존재죠...

프로필러와 튜닝관리자를 통한 인덱스 튜닝 받기

작성자 : 박종명
최초 작성일 : 2009-09-15 (화요일)
최종 수정일 : 2009-09-15 (화요일)
조회 수 : 4620

SQL Server 는 프로필러(Profiler)를 통해 요청한 쿼리들을 추적할 수 있도록 해 준다

그리고 SQL Server 는 엔진 차원에서 튜닝을 도와주는 도구인 '데이타베이스 엔진 튜닝 관리자'를 제공한다

이 두개의 도구를 이용하면 아주 훌륭한 튜닝 도움을 받을 수 있다
전문적인 튜닝 및 인덱스 설계 지식이 부족하다면, 이 튜닝도구를 활용해 보는 것도 좋을 것이다

그럼, 어떻게 튜닝에 대한 도움을 받을 수 있는지 시뮬레이션 해 보자

1. 우선, 아래와 같이 테이블을 하나 맹글자
    테이블 생성할 때 인덱스는 만들지 않는다. 우리는 SQL Server 엔진에게 인덱스 도움을 받을 것이다
CREATE TABLE TB_BOARD
(
 IDX  INT,
 Writer VARCHAR(50),
 TITLE VARCHAR(200) 
)

2. 그리고 값을 만개 정도 입력해 두자
DECLARE @I INT; SET @I = 1

WHILE(@I < 10000)
BEGIN
 INSERT INTO TB_BOARD VALUES(@I,'홍길동', '제목입니다')
 SET @I = @I + 1
END

3. 이제 아래 쿼리를 준비하자. 이 쿼리는 프로필러로 캡쳐할 쿼리이다
SELECT * FROM TB_BOARD WHERE IDX = 5000

특정 IDX를 찾는 포인트 쿼리이다. 즉 만개 중 하나를 찾는 쿼리이다
보통 포인트쿼리에는 클러스터드 인덱스가 추천된다. 하지만 우리는 테이블에 인덱스를 걸지 않았다
SQL Server 의 튜닝 관리자가 어떤 도움을 줄지 알아 보자

4. 프로필러(Profiler)를 띄우자. 그리고 3번의 쿼리를 실행해 본다
   그러면 아래 그림처럼 프로필러에 캡쳐될 것이다


5. 이제 프로필러를 일지 중지하고
    파일 -> 다른이름으로 저장 -> 추적 파일을 선택하여 myProfiler1.trc 로 저장한다

6. 프로필러의 도구->데이터베이스 엔진 튜닝 관리자를 선택하여 아래 그림과 같이 튜닝 대상 데이터베이스와
    테이블을 선택하고 5번에서 저장한 추적파일인 myProfiler1.trc를 지정해 준다


7. 설정이 다 되었으면 상단의 '분석 시작' 을 클릭해 분석을 수행한다
    환경에 따르 조금 다르겠지만 어느 정도 시간이 튜닝을 위한 시간이 지난 후에 결과가 나온다
    아래는 결과 화면이다
   

 

결과를 보면 TB_BOARD 테이블에 IDX 컬럼에 클러스터드 인덱스를 걸도록 권장하고 있다
이런 친절한 SQL Server 를 보았나...

실제 테스트 단계에서도 도움을 받을 수 있지만, 많은 쿼리들이 운용되고 있는 라이브 환경에서도
성능 저하가 야기 된다면 튜닝 관리지를 통해 튜닝의 도움을 받는 것이 좋을 것이다

이름
비밀번호
홈페이지
PS <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요