문제 상황

❗운영 환경에서 발생하는 DB 커넥션 초과 이슈

• 상품 결제 시 외부 채널(PG사)과의 통신 이력을 저장하는 A_table 테이블에서 Slow Query 발생

• 쿼리 지연으로 인해 DB 커넥션 시간이 초과되면서 결제 요청 실패

❗테이블 특성상 지속적인 데이터 증가

• 한 주문당 평균 2~4건의 이력 데이터가 저장되며, 서비스 운영 기간이 길어질수록 데이터가 지속적으로 증가

• 특정 주문번호(ord_no)를 조건으로 최근 요청 이력을 조회하는 쿼리가 전체 테이블을 스캔(Table Scan)하면서 성능 저하 발생


해결 방법

✏️ 성능 병목 분석 (Query Plan 활용)

DBeaver의 실행 계획(Query Plan) 분석을 통해 병목 원인 확인

• ord_no 컬럼을 조건으로 조회할 때 Full Table Scan 발생

• 정렬(Sort) 및 필터(Filter) 과정에서 불필요한 비용 발생

✏️ ****Index 적용

• ord_no 컬럼에 B-Tree 인덱스 추가

• 실행 계획 변경 사항을 비교하여 성능 개선 여부 확인