작성
·
432
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예
[질문 내용]
안녕하세요.
리드온리 옵션 관련해서 강의를 듣다가 궁금해진건데
서비스에서 Select문 만을 호출하는 메서드가 @Transaction(readOnly = true)를 달고 있는 것과 트랜잭셔널 어노테이션을 아예 안달고 있는 것 중에 후자가 성능상 이점이 있나요?
아니면 해당 설명은 타입 수준에서 트랜잭션을 걸고 읽기 전용 트랜잭션 메서드를 따로 정의하기 위한 것인가요?
답변 1
1
안녕하세요. jmlee님
이 부분은 DB마다 결과가 다릅니다.
읽기 전용 트랜잭션을 적어주게 되면 DB에서 읽기만 사용한다고 인지해서 내부 최적화를 하는 경우도 있고, 읽기 전용 트랜잭션을 시작하기 때문에 트랜잭션을 시작한다는 네트워크 통신이 1번더 일어나서 성능에 더 불리한 경우도 있습니다. (트랜잭션 없는 단순 select대비)
그래서 이 부분은 DB마다 다르므로 성능 테스트를 하고 결정해야 합니다.
감사합니다.