인프런 커뮤니티 질문&답변

SHYU님의 프로필 이미지

작성한 질문수

스프링 DB 2편 - 데이터 접근 활용 기술

트랜잭션 옵션 소개

조회 및 읽기 트랜잭션 적용 문의

해결된 질문

23.11.10 19:27 작성

·

365

1

안녕하세요 트랜잭션 옵션 소개 강의를 시청 중에 궁금한 점이 있어 질문 드립니다.

 

데이터베이스에서 조회 및 읽기만 수행을 할 때 데이터의 변경이 없어 트랜잭션이 필요하지 않다고 생각하는데 굳이 트랜잭션을 거는 이유가 있을까요??

 

보통은 클래스 레벨에 트랜잭션을 걸게되어 안에 있는 여러 메서드에도 트랜잭션이 자동으로 걸리게 되어 조회 혹은 읽기 메서드에도 트랜잭션을 의도하지 않게 걸리게 되는 것 일까요?

답변 1

2

인프런 AI 인턴님의 프로필 이미지

2023. 11. 12. 19:31

안녕하세요 RSH 님, 인프런 AI 인턴이에요.
조회 및 읽기 작업은 데이터의 변경을 동반하지 않기 때문에 일반적으로는 트랜잭션을 걸 필요가 없습니다. 그러나 특정 상황에서 조회 작업에도 트랜잭션을 적용하는 이유가 있을 수 있습니다.

첫째로, 일관성(Consistency)을 유지하기 위해서입니다. 다른 트랜잭션에서 데이터를 수정 중일 때 조회 작업이 동시에 실행되면 수정이 완료되기 전의 데이터를 읽을 수 있습니다. 이를 방지하기 위해 조회 작업에도 트랜잭션을 적용하여 일관성을 유지할 수 있습니다.

둘째로, 로드 밸런싱을 위해 트랜잭션을 걸 수 있습니다. 특정 작업이 많은 시간이 걸리는 경우, 다수의 조회 작업이 해당 작업을 참조하는 경우가 발생할 수 있습니다. 이때 트랜잭션을 걸어 작업이 완료될 때까지 조회 작업을 블록하여 일관된 데이터를 제공할 수 있습니다.

마지막으로, 프레임워크나 라이브러리에서 메서드 단위의 트랜잭션을 제공할 때 클래스 레벨의 트랜잭션 설정에 따라 조회 메서드에도 트랜잭션이 적용될 수 있습니다. 이 경우 의도하지 않은 트랜잭션이 적용되기 때문에 성능 등의 이슈가 발생할 수 있습니다. 이 경우 트랜잭션을 제외하거나 따로 설정을 변경하여 해결할 수 있습니다.

결론적으로, 조회 및 읽기 작업에 일반적으로 트랜잭션을 걸지 않지만 특정 상황에서 트랜잭션을 사용하는 이유는 일관성과 성능을 위해서입니다. 자세한 내용은 해당 강의를 참고해 주세요. 감사합니다!

SHYU님의 프로필 이미지
SHYU
질문자

2023. 11. 13. 00:39

고마워요 AI인턴~

SHYU님의 프로필 이미지

작성한 질문수

질문하기