백엔드
biz-crm IndexedDAO 적용기
두줄요약
biz-crm 대용량 검색 지연 문제를 사용자 인터뷰로 원인부터 재점검했습니다. 범용 필터를 줄이고 IndexedDAO를 도입해 인덱스 기반 조회로 개선했습니다.
문제 상황
- biz-crm 내부 백오피스에서 대용량 테이블 검색 시 타임아웃과 수 초 지연 발생
- 1000만 건 이상 테이블에서 Full Table Scan이 일어나며 성능 저하
- CX팀의 실제 사용 관점에서는 특정 채널 데이터 조회가 핵심이었으나 범용 필터 구조가 과도함
원인 분석
LOWER(col)기반 대소문자 무시 검색으로 기존 인덱스 무력화- JOOQ의
equalIgnoreCase,containsIgnoreCase가 인덱스 비활성화 패턴 생성 - 실제 사용 빈도가 낮은 Expression 다중 필터가 불필요한 조회 범위 확대 유발
해결 방법
- 사용 패턴 인터뷰로 필수 조회 조건을
ChannelID중심으로 재정의 - 범용 Expression Filter는 유지하고 대용량 테이블에는
IndexedDAO패턴만 적용 SearchRequest단위로 검색 조건을 명시화해 인덱스 히트가 가능한 쿼리 생성
