웹 개발
로컬 데이터베이스 쿼리가 자꾸 느려질 때
목록 조회 속도가 갑자기 느려지면, 스키마와 데이터부터 확인하는 방법을 정리했다.
혼자 개발할수록 확인한 값과 바꾼 값을 따로 남기는 습관이 필요하다. 로컬 DB 문제는 한두 번 경험하면 패턴을 알 수 있다.
DB 쪽 문제는 화면만 보고 판단하면 놓치는 값이 많다. 스키마, 권한, 마이그레이션 상태를 함께 봐야 원인을 찾을 수 있다.
문제의 경계를 명확하게 긋기
로컬에서만 느린가, 운영에서도 느린가. 특정 쿼리가 느린가, 모든 쿼리가 느린가. 먼저 문제의 범위를 좁혀야 한다.
- 로컬만 느림: 로컬 설정 문제
- 둘 다 느림: 스키마나 데이터 문제
- 특정 쿼리만 느림: 인덱스 문제
로컬과 운영을 비교하기
로컬과 운영의 데이터 상태가 다를 수 있다. 이 차이를 인식해야 한다.
npx prisma validate
npx prisma migrate status
이 명령으로 스키마가 일관성 있는지, 마이그레이션이 모두 적용됐는지 확인한다.
권한이 애매하면 다른 건 다 무의미
데이터에 접근할 권한이 없으면 쿼리를 할 수 없다. 사용자 권한을 먼저 확인한다.
스키마 확인이 첫 단계
데이터 구조가 이상하면 쿼리도 이상해진다. 테이블 구조, 컬럼 타입, 기본값을 확인한다.
- 필요한 인덱스가 있는가
- 외래 키 관계가 정상인가
- 데이터 타입이 맞는가
백업 확인 후 작은 변경하기
스키마를 변경하기 전에 반드시 백업을 한다. 변경 후 문제가 생기면 빠르게 복구할 수 있어야 한다.
- 현재 상태 백업
- 한 가지 항목 수정
- 실행해서 확인
- 결과를 기록
다음 확인까지는 체크리스트로
비슷한 문제가 또 나오면 체크리스트로 빠르게 처리할 수 있다.
- 마이그레이션 상태 확인했는가
- 스키마 유효성 검사했는가
- 권한은 충분한가
- 백업은 했는가
이 체크리스트를 거치고 나서 실제 문제 해결을 시작한다. 마지막에는 실제 화면이나 공개 URL까지 확인해야 작업이 끝난다. 관련 기록을 짧게라도 남겨두면 다음 확인이 훨씬 빨라진다.