- 데이터 입 · 출력 애플리케이션의 성능 향상을 위해 SQL 코드를 최적화하는 것
- 쿼리 성능 최적화 전에 성능 측정 도구인 APM을 사용하여 최적화 할 쿼리를 선정해야 함
💡 APM (Application Perfomance Management/Monitoring)
- 애플리케이션의 성능관리를 위해 접속자, 자원 혀황, 트랜잭션 수행 내역, 장애 진단 등 다양한 모니터링기능을 제공하는 도구
- 리소스 방식 : Nagios, Zabbix, Cacti
- 에느투엔드 방식 : VisualVM, 제니퍼, 스카우터
- 최적화 할 쿼리에 대해 옵티마이저가 수립한 실행 계획을 검토하고 SQL코드와 인덱스를 재구성
💡 옵티마이저
- 작성된 SQL이 가장 효율적으로 수행되도록 최적의 경로를 찾아주는 모듈
- 실무에서는 주로 CBO 사용
→ 입 · 출력 속도, CPU 사용량, 쿼리의 블록 개수, 쿼리에 사용되는 개체의 속성, 튜플의 개수 등 종합하여 DBMS마다 고유의 알고리즘에 따라 산출되는 '비용'을 계산하기 때문에 변경되면 실행 계획을 다시 확인해야함
| RBO(Rule Based Optimizer) | CBO(Cost Based OPtimizer) | |
| 최적화 기준 | 규칙에 정의된 우선순위 | 액세스 비용 |
| 성능 기준 | 개발자의 SQL 숙력도 | 옵티마이저의 예측 성능 |
| 특징 | 실행 계획 예측이 쉬움 | 성능 통계치 정보 활용, 예측이 복잡함 |
| 고려사항 | 개발자의 규칙 이해도, 규칙의 효율성 | 비용 산출 공식의 정확성 |
1. 실행 계획(Execution Plan)
- DBMS의 옵티마이저가 수립한 SQL 코드의 실행 정차와 방법을 의미
- 실행 계획은 EXPLAIN 명령어를 통해 확인 가능
- 그래픽이나 텍스트로 표현
- 요구사항들을 처리하기 위한 연산 순서가 적혀있으며, 연산에는 조인, 테이블 검색, 필터, 정렬 등이 존재
2. 쿼리 성능 최적화
- 실행 계획에 표시된 연산 순서, 조인 방식, 테이블 조회 방법 등을 참고하여 SQL문이 더 빠르고 효율적으로 작동하도록 SQL 코드와 인덱스를 재구성하는 것
1) SQL 코드 재구성
- WHERE절을 추가해 일부 레코드만 조회하게 함으로써 조회 비용을 줄임
- WHERE정에 연산자가 포함되면 INDEX를 활용하지 못하므로 가능한 한 연산자 사용을 자제
- 서브 쿼리에 특정 데이터가 존재하는지 확인할 때는 IN보다 EXISTS 활용
- 옵티마이저의 실행 계획이 잘못되었다고 판단되는 경우 힌트를 활용해 실행 계획의 액세스 경로 및 조인 순서를 변경
- 힌트(Hint) : SQL문에 추가되어 테이블 접근 순서를 변경하거나, 인덱스 사용을 강제하는 등의 실행 계획에 영햘을 줄 수 있는 문장
2) 인덱스 재구성
- 조회되는 속성과 조건들을 고려하여 인덱스를 구성
- 실행 계획을 참고하여 인덱스를 추가하거나 기존 인덱스의 열 순서를 변경
- 인덱스의 추가 및 변경은 해당 테이블을 참조하는 다은 SQL문에도 영향을 줄 수 있으므로 신중히 결정
- 단일 인덱스로 쓰기나 수정없이 읽기로만 사용되는 테이블의 경우 IOT(Index-Organized Table)로 구성하는 것을 고려
- IOT : 인덱스 안에 테이블 데이터를 직접 삽입하여 저장함으로써 주소를 얻는 과정이 생략되어 빠른 조회 가능
- 불필요한 인덱스 제거
📖 Reference
2023 시나공 정보처리기사 필기 : 네이버 도서
네이버 도서 상세정보를 제공합니다.
search.shopping.naver.com
728x90
반응형
'Certificate > 정보처리기사' 카테고리의 다른 글
| [3과목 데이터베이스 구축] 데이터 전환 - 124. 데이터 검증 ~ 126. 데이터 정제요청서 및 정제보고서 (1) | 2025.11.20 |
|---|---|
| [3과목 데이터베이스 구축] 데이터 전환 - 121. 데이터 전환 ~ 123. 데이터 전환 방안 (0) | 2025.11.19 |
| [3과목 데이터베이스 구축] SQL 활용 - 119. ⭐ ORM (Object-Relational Mapping) (0) | 2025.11.19 |
| [3과목 데이터베이스 구축] SQL 활용 - 118. SQL 테스트 (0) | 2025.11.19 |
| [3과목 데이터베이스 구축] SQL 활용 - 117. DBMS 접속 기술 (0) | 2025.11.19 |