← 전체 글로 돌아가기

DB

DB 트랜잭션 문제 디버깅하기

트랜잭션 중 에러가 발생했을 때 롤백이 제대로 되는지 확인하는 방법.

트랜잭션 문제는 화면 하나만 봐서는 알 수 없다. 로그와 데이터베이스 상태를 함께 봐야 한다.

문제가 생기면 일단 멈춰서 현재 상태를 파악하자. 데이터가 얼마나 저장되었는가? 롤백이 제대로 되었는가?

먼저 보이는 증상 확인

사용자가 보는 에러 메시지는? 어느 부분에서 멈췄는가? 이것부터 정리하자.

원인을 나누는 기준

  • 마이그레이션이 빠져 있는가
  • 스키마가 맞게 정의되어 있는가
  • 트랜잭션 격리 수준이 적절한가

스키마 확인 명령어

npx prisma validate
npx prisma migrate status

스키마와 실제 데이터베이스가 일치하는가? 펜딩 중인 마이그레이션은 없는가?

명령어로 직접 확인

데이터베이스 클라이언트에서 직접 데이터를 확인해보자. 부분적으로 저장된 데이터는 없는가?

백업 상태 확인

문제가 생겼을 때 이전 상태로 돌아갈 수 있는가? 백업 주기와 복구 절차를 정해두자.

한 번에 여러 설정을 바꾸지 않는 것만으로도 원인 추적이 훨씬 쉬워진다.