본문 바로가기
Tech/Database

Tibero SQL 튜닝

by Augustine™ 2019. 1. 12.
반응형

Tibero SQL 튜닝


1. 튜닝 대상 SQL 찾기

우선 튜닝 대상 SQL을 다음과 같은 방법으로 찾는다.

  • APM을 통한 TOP SQL 분석
  • LONGOPS View를 통한 분석
  • 시스템 사용자에 의한 성능적인 이유 해결의 요청

* 주의 사항

 쿼리 응답 시간이 짧다고 무조건 튜닝 대상에서 제외하면 안된다. 만약 이 쿼리의 수행횟수가 많다면, 이 쿼리의 블록 처리량도 많다.  따라서, 이러한 쿼리도 블록처리량을 감소시키는 것을 목표로 잡아야 한다.


2. SQL 실행 계획 추출

튜닝대상 SQL을 찾았다면 실행계획을 확인해야 한다.

  • V$SQL_PLAN뷰를 통한 확인
  • TBSQL 프로그램의 AUTOTRACE 기능을 통해 보기
  • SQLTRACE 기능을 이용해서 TBPROF 프로그램으로 수행결과 보기
  • EXPLAIN PLAN문을 통해 PLAN_TABLE에 저장하고 보기


3. SQL 분석 및 튜닝

데이터에 대한 접근 경로를 검토해야 한다. 읽어 들이는 블록수를 최소화 하기 위하여 인덱스를 통한 데이터 접근 경로를 찾아야 한다. 해당 SQL 실행 시, 적절한 인덱스를 사용하지 못한다 하면 원인을 파악 후 조치해야 한다.

1) 조건에 알맞은 인덱스가 없다면 신규 생성

2) 인덱스 통계정보 부재 시 통계정보 생성

3) 인덱스 컬럼 가공에 의한 인덱스 사용 불가 여부 확인


▶ 테이블간 조인 순서 및 방법

Index Join : 선행테이블의 건수가 적고, 후행 테이블의 건수가 많음. 그리고 후행테이블 인덱스가 존재할 때 사용.

Hash Join : 위 인덱스 조인과 같은 케이스이나, 후행 테이블에 인덱스가 존재하지 않는다면 Hash Join을 고려해봐야 한다.

Sort merge Join : 선행, 후행 테이블의 건수가 많을 떄, Sort merge join을 고려할 수 있다.


▶ 동일 테이블을 반복해서 읽는 경우.

동일 테이블 대상으로 여러 번 읽을 경우, 읽는 블록 수가 증가하는 문제점이 있다.

이런 경우, 분석 함수를 통한 데이터를 가공해서 처리하는 방법과 With 절을 사용하는 방법이 있다.





반응형

'Tech > Database' 카테고리의 다른 글

인조식별자에 대한 고찰  (0) 2021.07.28
DB 튜닝에 대한 얇고 넓은 지식  (0) 2019.01.13
Transaction Isolation Level 이해  (0) 2018.11.22
인덱스 구조  (2) 2018.08.02
Database I/O  (0) 2018.07.26

댓글