[정보처리산업기사] 86강 쿼리 성능 최적화

DongHo Im·2022년 2월 1일
0

정보처리산업기사

목록 보기
86/86
post-custom-banner

1.쿼리 성능 최적화 개요

데이터 입출력 애플리케이션의 성능 향상을 위해 SQL 코드를 최적화하는 것

  • 쿼리 성능 최적화 전에 성능 측정 도구인 APM을 사용하여 최적화 할 쿼리를 선정

    • APM(Application Performanc Management/Monitoring) : 애플리케이션의 성능 관리를 위해 접속자, 자원 현황, 트랜잭셩 수행 내역, 장애 진단 등 다양한 모니터링 기능을 제공하는 도구
  • 최적화 대상 쿼리에 대해 옵티마이저가 수립한 실행 계획을 검토하고 SQL 코드와 인덱스 재구성


2. 옵티마이저(Optimizer)

옵티마이저는 작성된 sql이 가장 효율적으로 수행되도록 최적의 경로를 찾아 주는 모듈이다.

  • 옵티마이저 종류

    • RBO(rule based optimizer)
    • CBO(cost based optimizer)
      • 실무에서 주로 사용됨
  • RBO와 CBO의 차이점

구분RBOCBO
최적화 기준규칙에 정의된 우선순위액세스 비용
성능 기준개발자의 sql 숙련도옵티마이저의 예측 성능
특징실행 계획 예층 어려움성능 통계치 정보 활용, 예측이 복잡함
고려사항개발자의 규칙 이해도, 규칙의 효율성비용 산출 공식의 정확성

3. 실행 계획(Execution Plan)

DBMS의 옵티마이저가 수립한 SQL 코드의 실행 절차와 방법을 의미

  • EXPLAIN 명령어를 통해 그래픽이나 텍스트로 표현 되는 실행 계획 확인 가능

  • 실행 계획에는 요구사항들을 처리하기 위한 연산 순서가 적혀 있고, 연산에는 조인, 테이블 검색, 필터, 정렬 등이 있다.


4. 쿼리 성능 최적화

실행 계획에 표시된 연산 순서, 조인 방식, 테이블 조회 방법 등을 참고하여 SQL문이 더 빠르고 효율적으로 작동하도록 SQL 코드와 인덱스를 재구성하는 것

SQL 코드 재구성

  • WHERE 절을 추가하여 일부 레코드만 조회하게 함으로써 조회에 들어가는 비욜 절감

  • WHERE 절에 연산자가 포함되면 INDEX를 활용하지 못하므로 가능한 연산자 사용 자제

  • 서브 쿼리에 특정 데이터가 존재하는지 확인할 때는 IN보다 EXISTS 활용

  • 옵티마이저의 실행 계획이 잘못되었다고 판단되는 경우, Hint를 활용하여 실행 계획의 액세스 경로 및 조인 순서를 변경

인덱스 재구성

  • SQL 코드에서 조회되는 속성과 조건들을 고려하여 인덱스 구성

  • 실행 계획을 참고하여 인덱스를 추가하거나 기존 인덱스의 순서 변경

  • 인덱스의 추가 및 변경은 해당 테이블을 참조하는 다른 SQL문에도 영향을 주기 때문에 신중히 결정

  • 단일 인덱스로 쓰거나 수정 없이 읽기로만 사용되는 테이블의 경우 IOT(Index-Organized Table)로 구성하는 것을 고려

IOT : 인덱스가 있는 테이블을 조회할 때, 인덱스를 검색하여 주소를 얻고 주소를 다시 찾는 과정을 거치는데, IOT는 인덱스 안에 테이블 데이터를 직접 삽입하여 저장하기 때문에 주소 얻는 과정을 생략하여 빠른 조회 가능

  • 불필요한 인덱스는 제거
profile
[DATABASE] 비전공자 출신의 개발 도전!
post-custom-banner

0개의 댓글