[개발지식] 대용량 통계 쿼리 작성 시 유의사항 3

Hyo Kyun Lee·2024년 10월 22일
0

개발지식

목록 보기
55/60

1. 개요

  • 대용량 통계 쿼리 성능 개선 작업을 진행하면서 알게된 점을 기록하였다.

2. 성능 개선 작업을 진행하면서 알게된 점

  • 50만건의 데이터에서 3000건의 서로 다른 기준의 통계를 산출하는 데이터 조회 시
    최초) 10초 이상
    -> 기준 데이터의 조건을 최대한 설정하여 데이터 부피를 감소
    -> 5초
    -> PARTITION BY를 사용하여 산출할 수 있는 부분은 한 기준 테이블에서 최대한 산출하며, 불필요한 기준 테이블 제거
    -> 1초 -> with 제거 및 서브쿼리화
    -> 0.5초
    (* CPU 및 GPU 점유율도 3~4% 가량 개선할 수 있었음)

  • 조회조건을 설정하고 작년 일자를 설정한다고 할 때
    -> 6만건 데이터의 기준 테이블을 구성하기 위해 조회조건을 설정할때,
    ‘20241022’ 의 일반 YYYYMMDD를 조건으로 설정 시 180ms
    TRUNC와 같은 계산 함수 활용 시 385ms
    SUBSTR사용 시 181ms의 성능을 보였다.
    따라서 SUBSTR를 사용할 수 있다면 SUBSTR를 사용하는 것이 좋겠고, TRUNC와 같은 집계/계산 함수는 사용을 최대한 지양하는 것이 좋겠다.

  • GROUP BY 사용 시 알게된 점
    -> 동일한 GROUP BY를 사용하여 3000건의 데이터를 조회한다 하더라도, 다른 기준에서 산출한 2건 데이터씩 1500row를 산출하는 것과 동일한 기준에서 한꺼번에 산출한 3000row의 데이터를 산출하는 것은 엄청난 성능 차이를 보였다(오히려 다른 기준 2건데이터 * 1500row가 10배 가까이 성능차이를 보임)

0개의 댓글