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 |
댓글