어드민 커뮤니티 게시글 조회 속도 개선
[문제]
- 커뮤니티 어드민 서비스에서 게시판별 게시글 목록을 조회할 때, 게시글이 100만 개 이상 넘어가는 게시판의 경우, 쿼리 실행 시간만으로도 3~4초가 소요되어 사용자 경험에 부정적인 영향을 미침
[어려웠던 점과 극복 방법]
- FileSort 문제 발생
- 기본 정렬이 최신순 정렬인데, REG_DATE 가 복합 인덱스가 빠져 있어, (기존 인덱스는 BOARD_SEQ, REG_ID 기준으로 복합 인덱스가 걸려 있었음) 복합 인덱스로 정렬된 값을 다시 최신순 정렬하는 과정을 반복하며 비효율이 발생됨. 이 때, 조회된 데이터 크기가 클 수록 더 큰 성능저하 현상이 발생됨
[해결방안]
- 데이터를 조회하는 쿼리를 분석한 뒤, 선택도가 높은 컬럼과 자주 조회되는 컬럼을 결합하여 복합 인덱스를 추가
CREATE INDEX idx_board_contents_board_regid_reg_date ON tb_board_contents_comment (BOARD_SEQ, REG_ID, REG_DATE);
- 쿼리의 실행 계획을 재점검하여 새로운 인덱스가 제대로 적용되는지 확인하고, 반복적인 테스트를 통해 최적화 효과를 검증
[결과]
- 어드민 커뮤니티 게시글 목록 조회 속도 20배 개선
- 100만 개 이상 게시글을 가진 게시판에 대한 게시판별 게시글 목록을 조회 시 쿼리 실행 시간만 3~4초 → 200ms로 대폭 단축
커뮤니티 프로필 조회 속도 개선
[문제]
- 커뮤니티 서비스에서 사용자가 프로필을 조회할 때, 댓글 수가 많은 사용자의 프로필 조회 시간이 지나치게 오래 걸림
- 쿼리 실행 시간만으로도 3~4초가 소요되어 사용자 경험에 부정적인 영향을 미침
[어려웠던 점과 극복 방법]
- 어려움
- 단순히 로그 데이터를 분석하거나 모니터링 도구에 의존하는 방식으로는 문제의 본질을 파악하기 어려움
- 느린 응답의 원인이 애플리케이션 로직인지, 데이터베이스 쿼리인지 정확히 진단하는 과정이 복잡함
- 극복 방법
- 직접 커뮤니티 서비스를 사용하며 사용자의 시각에서 문제를 체감함으로써 느린 응답의 구체적인 원인을 파악.
- 프로파일링과 쿼리 분석 도구를 활용해 쿼리 실행 계획(EXPLAIN)을 확인하고, 댓글 수가 많은 사용자의 프로필 조회 시 인덱스가 제대로 활용되지 않는 것을 발견.
- 데이터베이스 설계와 인덱싱 전략을 재검토하여 최적화를 진행
[해결방안]
- 데이터를 조회하는 쿼리를 분석한 뒤, 선택도가 높은 컬럼과 자주 조회되는 컬럼을 결합하여 복합 인덱스를 추가
CREATE INDEX idx_board_contents_coments_reg_delete ON tb_board_contents_comment (REG_ID, BOARD_CONTENTS_SEQ, DELETE_YN);
- 쿼리의 실행 계획을 재점검하여 새로운 인덱스가 제대로 적용되는지 확인하고, 반복적인 테스트를 통해 최적화 효과를 검증
- 댓글 외에도 팔로워/팔로잉 수 조회와 같은 비슷한 쿼리들에도 동일한 방식으로 최적화를 적용
[결과]
- 댓글 수가 많은 사용자의 프로필 조회 시 쿼리 실행 시간이 3~4초 → 900ms → 60ms로 대폭 단축
- 서비스 전반의 응답 속도가 개선되면서 사용자 경험(UX)이 크게 향상
- 다른 데이터 조회에서도 동일한 최적화 방식을 적용하여, 전체적인 서비스 성능을 고도화할 수 있었음