문제 상황
❗운영 환경에서 발생하는 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 인덱스 추가
• 실행 계획 변경 사항을 비교하여 성능 개선 여부 확인