본문 바로가기
정보처리기사

정보처리기사 실기 - 데이터 입출력 구현 (4)

by 3.14pie 2022. 1. 15.

4. 데이터 프로시저 최적화

 

쿼리 성능 개선 절차 - 문제 있는 SQL 식별, 옵티마이저 통계 확인, 실행계획 검토, SQL문 재구성, 인덱스 재구성, 실행계획 유지관리

 

문제 있는 SQL 식별 : 어플리케이션 성능 관리나 모니터링에 사용하는 도구인 APM (Application Performance Managemeent) 등 활용

 

옵티마이저 통계 확인

  • 옵티마이저 : SQL문을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해주는 DBMS의 핵심 모듈
  • 최적의 처리 경로를 생성하기 위해 옵티마이저가 활용하는 통계정보를 주기적으로 현행화 (ANALYZE TABLE member COMPUTE STATISTICS;)
  • RBO (Rule Based Optimizer) : 통계 정보가 없는 상태에서 미리 등록된 규칙에 따라 질의 실행 계획을 선택하는 옵티마이저, 우선 순위 기반, 인덱스 구조, 조건절 형태.., 사용자가 원하는 처리경로로 유도 가능
  • CBO (Cost Based Optimizer) : 통계 정보로부터 모든 접근 경로를 고려한 질의 실행 계획을 선택하는 옵티마이저, 수행 시간 기반, 레코드 수, 블록 수, 컬럼 값 분포.., 성능보장 가능 (구분 : 쿼리변환, 비용산정, 계획 생성)

 

실행계획 검토 : 처리량이 적은 테이블을 driving table로 지정했는지 확인

 

SQL문 재구성

  • 특정 값 지정하기 : <나 >보다 = 활용, 범위 줄이기)
  • 힌트 사용 : 옵티마이저가 비정상적인 실행계획을 수립할 때 힌트로 액세스 경로와 조인 순서를 제어할 수 있게 도와줌
  • 별도의 SQL 사용 : 컬럼 변경 연산자 쓰지 않기, 불필요한 검색 방지, 하나의 SQL문 사용시 UNION ALL 연산자 사용
  • HAVING 미사용 : 인덱스가 걸린 컬럼은 HAVING 사용 시 인덱스 미사용
  • 인덱스만 질의 사용 : 가능한 인덱스만 이용해 질의를 수행해 옵티마이저가 최적의 경로를 찾도록 유도

 

인덱스 재구성 : 성능에 중요한 액세스 경로를 고려해 인덱스화 (자주 쓰는 컬럼 선정, SORT 명령어 생략, 분포도 고려, 변경 적은 컬럼 선정, 결합 인덱스 사용)

 

실행계획 유지관리 : DB 버전 업그레이드, 데이터 이동 등 시스템 환경 변경 사항이 발생할 때도 실행계획이 유지되는지 모니터링하고 관리