I/O 효율화 원리
하드웨어적 방법을 통해 I/O의 성능을 높이는 것도 좋지만, 애플리케이션 측면에서 논리적인 I/O의 요청 횟수를 최소화하는 것이 I/O효율화 튜닝의 핵심이다.
- 애플리케이션 측면에서의 I/O효율화 원리
- 필요한 최소 블록만 읽도록 쿼리작성한다.
- 최적의 옵티마이저 팩터를 제공한다
- 필요하다면, 옵티마이저 힌트를 사용해 최적의 액세스 경로로 유도한다.
(1) 필요한 최소 블록만 읽도록 쿼리작성
- SQL명령을 던지는 사용자 스스로 최소 일량을 요구하는 형태로 논리적 집합을 정의하고, 효율적인 쿼리를 작성한다.
(예1) 게시판 쿼리(p483) - 결과집합을 확정 짓고서, 그 이후에 조인
(예2) 거래현황 집계 쿼리(p484) - 테이블 한번만 읽고서도 원하는 결과를 도출할 수 있도록 변경
(2) 최적의 옵티마이저 팩터 제공
사용자 의도대로 블록 액세스를 최소화하면서, 효율적인 쿼리 프로세싱을 할 수 있도록 최적의 옵티마이저 팩터를 제공해 주어야 한다.
- 전략적 인덱스 구성
- DBMS가 제공하는 다양한 기능 활용 : 파티션, 클러스터, IOT, MV, FBI, 분석함수 등 DBMS가 제공하는 기능들을 적극 활용한다.
- 옵티마이저 모드 설정 : 목적에 맞는 옵티마이저 모드 설정(all_rows, first_rows)
- 통계정보의 중요성 : dbms_stats.gather_table_stats 프로시저를 이용해, 통계정보를 수집한다.
(3) 필요하다면, 옵티마이저 힌트를 사용해 최적의 액세스 경로로 유도
가급적 옵티마이저 판단에 맡기는 것이 바람직하나, 옵티마이저가 생각만큼 최적의 실행계획을 수립하지 못하는 경우, 힌트를 사용하여 제어해준다.
문서에 대하여
- 최초작성자 : 오정희
- 최초작성일 : 2010년 1월 18일
- 이 문서는 오라클클럽 코어 오라클 데이터베이스 스터디 모임에서 작성하였습니다.
- {*}이 문서의 내용은 (주)비투엔컬설팅에서 출간한 '오라클 성능 고도화 원리와 해법I'를 참고하였습니다.*