[DB] - 트랜잭션

Joy H·2025년 3월 14일

트랜잭션(Transaction)이란

: DB 상태를 변화시키는 작업의 단위

-> 상태를 변화시키는 건 쿼리를 통해 변화시키는 것.
-> 쿼리 한 줄이 아닐 수도 있음 (작업의 단위가 늘어나는 것)
트랜잭션의 예시
: '상품 주문 후 주문 정보 조회'
-> 사용자가 상품 주문시, 주문 정보 INSERT 한 후,
주문 내역을 다시 SELECT하여 보여줌
-> 여기서 작업 단위 : INSERT문과 SELECT문을 합친 것 

트랜잭션의 특징 (ACID)

- 원자성(Atomicity)

-> 하나라도 실패시 아무것도 반영 안됨, 모두 성공해야 전체 반영

- 일관성(Consistency)

-> 작업 처리 결과가 항상 일 관성 있어야 함 
-> 트랜잭션 진행 중에 db 변경이 되더라도 변경된 db로 트랜잭션이 진행되는게 아니라 처음 트랜잭션 시작시 참조한 db로 진행

- 독립성(Isolation)

-> 두개 이상의 트랜잭션 동시 실행시, 다른 트랜잭션의 연산에 끼어들 수 없음
-> 하나의 특정 트랜잭션이 완료될 때까지 다른 트랜잭션이 특정 트랜잭션의 결과를 참조할 수 없음

- 지속성(Durability)

-> 트랜잭션이 성공적으로 완료시, 결과는 영구적으로 반영되어야 함

트랜잭션의 Commit, Rollback 연산

Commit : 하나의 트랜잭션 종료시 사용

-> commit 시, 수행헀던 트랜잭션이 로그에 저장
-> commit 된 결과를 최종 db에 반영

Rollback : 트랙잰션 처리가 비정상적 종료시 원자성이 깨질 때, 작업 취소

트랜잭션 사용법

begin transaction;

select * from tb_user;
update tb_user set di=null where id='aa';

select * from tb_user where id='aa'; // 변경값 확인

rollback; // 변경 취소
commit; // 변경 적용

0개의 댓글