← 전체 글로 돌아가기

웹 개발

데이터베이스 쿼리 성능 문제 진단하기

특정 정렬 조건에서 데이터베이스 쿼리가 느려질 때 원인을 체계적으로 찾는 방법입니다.

데이터베이스에서 정렬을 다룰 때는 단순히 ORDER BY를 추가하는 것보다 훨씬 복잡한 요소들이 있다. 대용량 데이터에서는 같은 쿼리라도 성능 차이가 크게 난다.

마이그레이션과 스키마 확인

먼저 데이터베이스의 현재 상태를 확인하자:

npx prisma validate
npx prisma migrate status
  • prisma validate: 현재 스키마와 실제 데이터베이스 상태가 일치하는지 확인
  • prisma migrate status: 미적용된 마이그레이션이 있는지 확인

마이그레이션이 완전히 적용되지 않으면 예상과 다른 성능이 나올 수 있다.

권한과 백업 확인

문제를 추적하기 전에 기본 사항을 확인한다:

  • 현재 사용자가 테이블 조회 권한이 있는가
  • 최근 백업이 정상적으로 이루어졌는가
  • 읽기 전용 복제본이 있다면 그쪽은 문제없는가

구체적인 원인 찾기

정렬 성능이 느릴 때 확인해볼 사항:

  1. 해당 정렬 컬럼에 인덱스가 있는가
  2. 인덱스가 있다면 실제로 사용되고 있는가
  3. WHERE 조건이 인덱스를 활용하는 순서인가

작은 규모로 먼저 테스트

전체 데이터셋으로 테스트하기 전에 작은 샘플 데이터로 먼저 해본다. 쿼리 실행 시간과 실행 계획을 확인하면 문제의 원인이 보인다.

결과가 바뀐 이유를 로그와 응답으로 설명할 수 있으면 충분히 정리된 것이다. 다음에 비슷한 문제가 나왔을 때 참고할 기록을 남겨두자.