[스프링] 트랜잭션
트랜잭션이란?
DML [ select, insert, delete, update ]를 이용해서 DB의 상태를 변화시키기 위해서 수행하는 작업의 단위이다.
하지만, 작업의 단위는 질의어 한문장이 아닌, 많은 질의어 명령문들을 기준에 따라 정한다.
-> 예를 들면, 사용자가 게시판에 글을 작성하고 저장한고 나서, 저장된 글을 본다고 가정하자. 그렇다면 DB의 입장에서는 insert & select 하는 건데, 이 두개를 합친 것이 하나의 작업단위이며, 하나의 트랜잭션이다.
트랜잭션의 Commit, Rollback
commit : 하나의 트랜잭션 성공 후, DB가 일관성 있는 상태에 있을 때, 트랜잭션이 끝났다는 것을 알려주기 위한 연산이다.
rollback : 하나의 트랜잭션이 비정상으로 종료되어 원자성이 깨진 경우, 트랜잭션을 처음부터 다시하거나, 트랜잭션의 부분적으로만 완성된 결과를 취소 시키는 연산이다.
* 원자성 : 트랜잭션이 DB에 모두 반영되거나, 아니면 전혀 반영되지 않아야 하는 트랜잭션의 특징 중 한가지 이다.
* 특징 : ACID ( 원자성, 일관성, 독립성, 지속성 )
트랜잭션의 상태
활동 : 트랜잭션이 실행중인 상태
실패 : 트랜잭션 실행에 오류가 발생하여 중단된 상태
철회 : 트랜잭션이 rollback 연산을 수행한 상태
부분완료 : 트랜잭션의 마지막 연산까지 했지만, commit 실행 전
완료 : 트랜잭션이 commit을 실행한 후의 상태
트랜잭션 사용시 주의할 점
트랜잭션은 꼭 필요한 최소한의 코드에만 적용하는 것이 좋다.
쪼개어 범위를 최소화하는 것을 의미한다.
왜냐하면, DB 커넥션의 개수가 제한적이기에 커넥션을 소유하는 시간이 길어지면, 사용 가능한 여유 커넥션의 개수가 줄어드는데, 이렇게 되면 커넥션을 가져가기 위해서 기다리는 등 기아상태가 발생이 가능하기 때문이다.
* 데이터베이스 커넥션 : 애플리케이션과 DB를 연결을 뜻하는 것으로, 애플리케이션에서 DB에 접속하고 접속을 종료하는 일련의 과정을 의미한다.
참고자료
트랜잭션(Transaction)이란?
트랜잭션이란? 트랜잭션(Transaction 이하 트랜잭션)이란, 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위를 뜻한다. 데이터베이스의 상태를 변화시킨다는 것은 무얼 의미하는 것일
mommoo.tistory.com
https://coding-factory.tistory.com/226
[DB기초] 트랜잭션이란 무엇인가?
트랜잭션의 정의 트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다. 트
coding-factory.tistory.com
https://velog.io/@chldppwls12/트랜잭션이란
트랜잭션이란
트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다.트랜잭션은 데이터베이스 시스
velog.io