이 글은 125개 온라인 SQL 튜닝보고서의 문제 상황, 문제 원인, 개선 방안을 구분한 후에 취합한 통계 현황이다.
오라클 SQL 튜닝 대상은 다음과 같은 경로로 선정하였다.
참고로, 실무에서 SQL 튜닝 대상을 선정하는 기준이 상당히 중요하긴 하나, 본 게시글의 주된 주제가 아니어서 구체적인 내용은 생략한다.
그리고, 필자가 이번에 수행한 과업의 SQL 튜닝 대상은 튜닝 가능 여부에 따라 다음과 같이 분류하였다.
위에서 튜닝 가능한 대상 125개에 대해서는 튜닝가이드를 작성하여 운영DB에 적용되도록 하였고, 튜닝 현황을 파악할 수 있도록, 다음과 같이 문제 상황, 문제 원인, 개선 방안을 구분하고 통계를 작성하였다.
오라클 SQL 튜닝 대상은 다음과 같은 경로로 선정하였다.
- AP 또는 DB 성능 모니터링 도구에서 평균 응답시간 등의 기준을 정하고 추출
- SQL 튜너가 동적뷰나 AWR 등을 통해 직접 DB시간, CPU시간, 블록수 등의 기준을 정하고 Top SQL을 추출
- 업무팀 또는 개발팀의 튜닝 요청
참고로, 실무에서 SQL 튜닝 대상을 선정하는 기준이 상당히 중요하긴 하나, 본 게시글의 주된 주제가 아니어서 구체적인 내용은 생략한다.
그리고, 필자가 이번에 수행한 과업의 SQL 튜닝 대상은 튜닝 가능 여부에 따라 다음과 같이 분류하였다.
- 튜닝 대상의 약 50%가 SQL 또는 인덱스로 개선 가능
- 단, 튜닝 요청 건의 경우 80% 이상 개선 가능
- 나머지 50% 중 약 20%는 넓은 범위 액세스 등의 사유로 SQL 튜닝 불가 처리
- 나머지 30%는 개선 노력 대비 효과가 크지 않아서 SQL 튜닝 제외 처리
위에서 튜닝 가능한 대상 125개에 대해서는 튜닝가이드를 작성하여 운영DB에 적용되도록 하였고, 튜닝 현황을 파악할 수 있도록, 다음과 같이 문제 상황, 문제 원인, 개선 방안을 구분하고 통계를 작성하였다.
문제 상황 통계
- “테이블/인덱스 과다 액세스"가 82건으로 66%를 차지함
- "조인 순서 부적합"이 27건으로 22%를 차지함
문제 원인 통계
- "필요한 인덱스가 없음"이 50건으로 40%를 차지함
- "선택적으로 사용되는 조건절"이 27건으로 22%를 차지함
개선 방안 통계
- "인덱스 설계 변경"이 51건으로 41%를 차지함
- "실행계획 분리"가 23건으로 18%를 차지함
- "조인순서 변경"이 10건으로 8%를 차지함
댓글
댓글 쓰기