개발자
find 혹은 findOne 함수를 통해 DB에 있는 데이터를 조회할 때도 트랜잭션을 적용하는 것이 좋을지 개발자 분들께 질문드립니다..
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2023년 12월 23일
데이터베이스에서 데이터를 조회할 때는 일반적으로 트랜잭션이 필요 없습니다. 그 이유는 데이터를 "읽기"만 할 뿐, 실제로 데이터가 변경되거나 수정되지 않기 때문입니다. 트랜잭션은 여러 개의 연산이 한 번에 이루어져야 할 때 중요합니다. 예를 들어, 은행 계좌에서 돈을 인출하는 상황을 생각해보세요. 돈을 줄이는 연산과 잔고를 업데이트하는 연산이 모두 완료될 때까지 계좌의 상태는 변경되면 안 됩니다. 그래서 보통 쓰기 작업(INSERT, UPDATE, DELETE 등)을 수행할 경우 트랜잭션을 사용하여 모든 연산이 성공적으로 완료되었는지 확인하고, 문제가 발생한 경우 롤백할 수 있습니다. 하지만 "조회" 작업인 find나 findOne은 데이터를 변경하는 것이 아니라 단지 읽는 것이므로 트랜잭션이 필요하지 않습니다. 그래도 몇 가지 주의해야 할 점이 있습니다. 만약 다른 사용자가 데이터를 변경하고 있는 상황에서 해당 데이터를 조회한다면, 최신 버전의 데이터가 아닐 수 있습니다. 이런 경우 '동시성 제어' 또는 '격리 수준(Isolation Level)'을 적절히 설정하는 등의 방법으로 데이터의 일관성을 유지할 수 있습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!