물리데이터베이스
SQL 성능 튜닝의 정의
- 튜닝 대상이 되는 SQL을 이해하고 정보를 분석하여 성능을 개선하는 활동
- 최소한의 CPU, I/O, 메모리를 사용하여 최대한 빠른 시간 내에 원하는 작업을 수행하도록 만드는 것
SQL 성능 튜닝의 순서
- 문제 있는 SQL 식별
- 옵티마이저 통계 확인
- 실행 계획 검토
- SQL문 재구성
- 인덱스 재구성
- 실행 계획 유지 관리
SQL 성능 튜닝 순서
1. 문제 있는 SQL 식별
- 애플리케이션의 성능을 관리하거나 모니터링하기 위한 툴인 APM을 활용
- APM; Application Performance Management
2. 옵티마이저 통계확인
- 개발자가 작성한 SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해 주는 데이터베이스 핵심 모듈
- Oracle은 CBO와 RBO 모드 지원
- CBO; Cost Based Optimizer
- RBO; Rule Based Optimizer
3. 실행 계획 검토
- DBMS의 옵티마이저가 수립한 SQL 코드의 실행 절차와 방법을 의미
- 요구사항들을 처리하기 위한 연산 순서가 적혀 있으며, 연산에는 조인, 테이블, 검색, 필터, 정렬 등이 있음
- Driving 테이블이 최상의 필터를 가지고 있는지를 중심으로 검토
- Driving 테이블
- 조인이 발생할 때 첫 번째로 액세스 되는 테이블
- 드라이빙 테이블 순서에 따라 데이터를 액세스하는 양이 대폭 늘어나거나 줄어들 수 있기 때문에 어떤 테이블을 먼저 드라이빙 하는지가 매우 중요
- 가장 적은 데이터를 추출할 것으로 예상되는 테이블을 먼저 드라이빙
- Driving 테이블
- 처리량이 작은 Table을 Driving 테이블로 지정되었는지 확인
4. SQL문 재구성
- WHERE절 사용
- 칼럼 변경 연산자 확인
- 범위 한정 사용
- 서브쿼리에 특정 데이터가 존재하는지 확인할 때는 EXISTS 보다 IN 사용
5. 인덱스 재구성
- 인덱스 구성
- 실행 계획 검토
- 관련 SQL 검토
- 코드 테이블 확인
- 단일 인덱스로 조회만 이루어진 테이블은 IOT로 구성
- 불필요한 인덱스 제거
6. 실행 계획 유지관리
- 실행 계획이 유지되고 있는지 모니터링하고 관리
- 데이터베이스 버전 업그레이드시
- 데이터의 시스템 이동 등 시스템 환경의 변경 사항 발생시