[정보처리기사] 실기 정리 - 2과목 (4)

inbdni·2020년 10월 13일
5

정보처리기사

목록 보기
7/34
post-thumbnail

🧀 쿼리 성능 개선


1. 개념

데이터베이스에서 프로시저에 있는 SQL 실행 계획을 분석 및 수정을 통해 최소 시간으로 원하는 결과를 얻도록 하는 작업


2. 개선 절차

(1) 문제 있는 SQL 식별

문제 있는 SQL을 식별하기 위해 애플리케이션의 성능을 관리 및 모니터링 도구인 APM을 활용

(2) 옵티마이저 통계 확인

① 개념
SQL을 가장 빠르고 효율적으로 수행할 최적의 처리 경로를 생성해 주는 DBMS 내부의 핵심 엔진

② 유형

  • 규칙 기반 옵티마이저 (RBO)

    • 통계 정보가 없는 상태에서 사전 등록된 규칙에 따라 질의 실행 계획을 선택
    • 사용자가 원하는 처리 경로로 유도하기 쉬움
    • 인덱스 구조, 연산자, 조건절 형태 등을 평가
    • 우선순위 기반
  • 비용 기반 옵티마이저 (CBO)

    • 통계 정보로부터 모든 접근 경로를 고려한 질의 실행 계획을 선택
    • 옵티마이저의 이해도가 낮아도 성능 보장 가능
    • 레코드 개수, 블록 개수, 평균 행 길이, 컬럼 값의 개수, 컬럼 값의 분포, 인덱스 높이, 클러
      스터링 팩터 등을 평가
    • 수행 시간 기반

③ SQL 수행 시 옵티마이저의 역할

  • 쿼리 변환
  • 비용 산정
  • 계획 생성

④ 힌트 사용
실행하려는 SQL문에 사전에 정보를 주어 빠른 실행 결과를 가져오는 효과를 만드는 문법

  • /* + RULE */ : 규칙 기반 접근 방식 사용
  • /* + CHOOSE */ : 오라클 디폴트 값 사용
  • /* + INDEX(테이블명 인덱스명) */ : 지정된 인덱스를 강제 사용
  • /* + USE_HASH(테이블명) */ : 지정된 테이블의 조인을 hash join 형식으로 유도
  • /* + USE_MERGE(테이블명) */ : 지정된 테이블의 조인을 sort join 형식으로 유도
  • /* + USE_NL(테이블명) */ : 지정된 테이블의 조인을 nested loop 형식으로 유도

(3) SQL문 재구성

범위가 아닌 특정 값을 지정해 범위를 줄여 처리 속도를 빠르게 함

  • 특정 값 지정
  • 별도의 SQL 사용
  • 힌트 사용
  • HAVING 미사용
  • 인덱스만 질의 사용

(4) 인덱스 재구성

성능에 중요한 액세스 경로를 고려하여 인덱스 생성

  • 자주 쓰는 컬럼 선정
  • SORT 명령어 생략
  • 분포도를 고려
  • 변경 적은 컬럼 선정
  • 결합 인덱스 사용

(5) 실행 계획 유지 관리

데이터베이스 버전 업그레이드, 데이터 전환 등 시스템 환경의 변경 사항 발생 시에도 실행 계획이 유지되고 있는지 관리




🐭 참고문헌

  • NCS 정보처리기술사 연구회. (2020). 수제비 정보처리기사 실기 (2판). 건기원.

0개의 댓글