반응형
쿼리성능 최적화
- 데이터 입, 출력 애플리케이션의 성능 향상을 위해 SQL 코드를 최적화하는 것
- 쿼리 성능 최적화하기 전, 성능 측정 도구인 APM(Application Performance Management)을 사용해 최적화 할 쿼리를 선정해야 함
- 최적화 할 쿼리에 대해 옵티마이저가 수립한 실행 계획(Execution Plan)을 EXPLAIN 명령어를 통해 검토하고, SQL 코드와 인덱스 재구성
1. 옵티마이저(Optimizer):
작성된 SQL이 가장 효율적으로 수행되도록 최적의 실행방법을 찾아 결정하는 모듈
1.1 실행 계획(Execution Plan)
- 사용자가 질의한 SQL문에 대해 ‘최적의 실행 방법’
- EXPLAIN 명령어로 그래픽, 텍스트로 확인
1.1.1 최적의 실행 방법 결정하는 방식
RBO(Rule Based Optimizer, 규칙 기반 옵티마이저) | CBO(Cost Based Optimizer, 비용 기반 옵티마이저) | |
최적화 기준 | DBA가 사전에 정의한 규칙에 정의된 우선순위 | 액세스 비용( 입출력 속도, CPU사용량, 블록 갯수, 개체 속성) |
성능 기준 | 개발자의 SQL 숙련도 | 옵티마이저 알고리즘의 예측 성능 |
특징 | 실행 계획 예측이 쉬움 | 성능 통계치 정보 활용, 예측이 복잡함 |
고려사항 | 개발자의 규칙 이해도, 규칙의 효율성 | 비용 산출 공식의 정확성 |
1.2 SQL 코드 및 인덱스 재구성
(1) SQL 코드 재구성
-서브 쿼리에 특정 데이터가 존재하는지 확인 할 때는 IN보다 EXISTS 활용
-실행 계획이 잘못되었다고 판단되는 경우 힌트(Hint)를 활용해 변경
-WHERE 절 사용하여 연산자 제한
(2) 인덱스 재구성
-인덱스의 추가 및 변경은 해당 테이블을 참조하는 다른 SQL문에도 영향을 줄 수 있으므로 신중히 결정
-단일 인덱스로 쓰기나 수정 없이 일기로만 사용되는 테이블의 경우 IOT(Index-Organized Table) 구성 고려
-불필요한 인덱스 제거
반응형
'Challenges > 정보처리기사' 카테고리의 다른 글
[정보처리기사]3.데이터베이스 구축/물리 데이터베이스 설계/데이터 전환 (0) | 2022.07.01 |
---|---|
[정보처리기사]3.데이터베이스 구축/SQL 활용/병행제어 (0) | 2022.06.19 |
[정보처리기사]3.데이터베이스 구축/SQL 활용/ORM(Object-Relational Mapping) (0) | 2022.06.17 |
[정보처리기사]3.데이터베이스 구축/SQL 활용/DMBS 접속 기술 (0) | 2022.06.16 |
[정보처리기사]3.데이터베이스 구축/SQL 활용/절차형 SQL (0) | 2022.06.15 |