인프런 커뮤니티 질문&답변
논리 커밋, 물리 커밋 질문드립니다.
작성
·
14
·
수정됨
0
강의 19분부터 설명하시는 내용이
트랜잭션 매니저에 커밋하는 것이 논리 커밋이라고 하시는데요,
실제 DB에 커밋하는 물리 커밋도 코드상에서 트랜잭션 매니저를 통해서 진행되는 것 아닌가요?
이건 어떻게 이해해야 할까요?
물리 트랜잭션이라는 것이 별개로 존재하는 것이 아니라 논리 트랜잭션이 모여진 개념이라
결국 트랜잭션 매니저에 하는 논리 커밋이라는 것이 사실 물리 커밋도 포함하는 개념이라고 이해하여야 하나요?
예를들어 외부 내부 트랜잭션이 있을 때 각각은 논리 트랜잭션이지만 하나의 물리 트랜잭션으로 묶이죠.
그리고 실제로 코드상에서 외부 트랜잭션에서 커밋을 하여야 물리 커밋이 진행되는데 이때 외부 트랜잭션을 별개로 보면 논리 커밋을 진행 한 것이기도 하지만 물리 커밋이 진행된 것처럼
트랜잭션 매니저가 하는 것은 논리 커밋이다 라는 개념도 논리 커밋을 하는 것은 외부 트랜잭션 일 경우 물리 커밋을 포함한다. 이렇게 이해하여야하나요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
yoon6669님께서 질문하신 트랜잭션의 “논리 커밋”과 “물리 커밋”에 대한 부분은 많은 개발자들이 명확히 이해하고 싶어하는 주제입니다. 이 내용을 간단히 정리해 드리겠습니다.
논리 커밋과 물리 커밋의 차이:
- 논리 커밋은 내부 트랜잭션의 커밋입니다. 이는 실제 DB에 저장되지 않고, 논리적으로 경계를 표시하는 것입니다.
- 물리 커밋은 실제 DB에 데이터를 저장하는 커밋입니다. 외부 트랜잭션 또는 최종적인 트랜잭션이 커밋될 때 물리적인 데이터베이스에 반영됩니다.
- 논리 커밋은 내부 트랜잭션의 커밋입니다. 이는 실제 DB에 저장되지 않고, 논리적으로 경계를 표시하는 것입니다.
트랜잭션 매니저의 역할:
- 트랜잭션 매니저는 논리 커밋과 물리 커밋을 모두 관리합니다. 내부 트랜잭션의 종료와 관련된 처리만을 수행하는 것이 논리 커밋입니다. 반면에 최종적으로 DB에 저장하도록 결정하는 것은 물리 커밋입니다.
- 트랜잭션 매니저는 논리 커밋과 물리 커밋을 모두 관리합니다. 내부 트랜잭션의 종료와 관련된 처리만을 수행하는 것이 논리 커밋입니다. 반면에 최종적으로 DB에 저장하도록 결정하는 것은 물리 커밋입니다.
외부와 내부 트랜잭션:
- 외부 트랜잭션(최상위 트랜잭션)이 최종 커밋을 수행하면 물리 커밋이 발생하여 DB에 반영됩니다. 내부 트랜잭션은 그 내부에서 처리되는 로직이 커밋될 때마다 논리 커밋이 발생하며 이는 물리 커밋 여부에 영향을 주지 않습니다.
- 외부 트랜잭션(최상위 트랜잭션)이 최종 커밋을 수행하면 물리 커밋이 발생하여 DB에 반영됩니다. 내부 트랜잭션은 그 내부에서 처리되는 로직이 커밋될 때마다 논리 커밋이 발생하며 이는 물리 커밋 여부에 영향을 주지 않습니다.
이러한 원리로 트랜잭션 관리가 이루어진다고 이해하시면 됩니다. 논리 커밋은 하나의 물리적 트랜잭션 내에서 논리적인 경계를 표시하며, 물리 커밋은 최종적으로 모든 변경사항이 DB에 반영되는 시점입니다.
유사한 주제에 대해 더 심도있는 이해를 원하시면, 김영한님의 스프링 DB 2편 - 데이터 접근 활용 기술 강의에서 더욱 상세한 내용을 확인하실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





