개발자

DB에 있는 데이터를 "조회"할 때도 트랜잭션이 필요한가요?

2023년 12월 23일조회 127

find 혹은 findOne 함수를 통해 DB에 있는 데이터를 조회할 때도 트랜잭션을 적용하는 것이 좋을지 개발자 분들께 질문드립니다..

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

코딩하는기린님의 프로필 사진

트렌젝션은 개념상 DB의 레코드를 삽입, 수정, 삭제 시에 발생하는 연산 단위를 묶어주는 개념으로 그런 연산이 포함되어있지 않다면 트렌젝션이 필요하지 않은 것으로 알고 있습니다. 다만 삽입 후 재조회 등과 같이 해당 리소스에 수정을 가하는 작업시에는 부분적으로 필요할 수도 있겠네요

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2023년 12월 23일

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

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!