Transaction, Commit, Rollback
1. Transaction (Tx)
: 더이상 나눌 수 없는 작업의 단위
: insert, update, select 명령어 하나하나가 transaction (더이상 작은 단위로 나눌 수 없음)
예) 계좌 이체의 경우 출금과 입금, 이 전체를 하나의 Tx로 묶어야 됨. (둘다 성공하지 않으면 트랜잭션 이전상태로 롤백을 해야함) - 모아니면 도
2. Transaction의 속성 - ACID
원자성 Atomicity - 나눌 수 없는 하나의 작업으로 다뤄져야 한다
일관성 Consistency - Tx 수행 전과 후가 일관된 상태 유지
고립성 Isolation - 각 Tx는 독립적으로 수행되어야 한다.
영속성 Durability - 성공한 Tx의 결과는 유지되어야 한다.
3. commit & rollback
커밋 - 작업 내용을 DB에 영구적으로 저장
롤백 - 최근 변경사항을 취소 (마지막 커밋으로 복귀)
4. 자동커밋과 수동커밋
자동커밋 - 명령 실행 후, 자동으로 commit 수행 (rollback 불가)
수동커밋 - 명령 실행 후, 명시적으로 commit 또는 rollback을 입력 // set automoccit =0;
👉 둘 이상의 트랜잭션으로 구성된 경우는 수동커밋으로 두어야 수정이 가능해짐
5. Tx의 isolation 레벨 - 각 Tx를 고립시키는 정도
read uncommited - 커밋되지 않은 데이터도 읽기 가능 👉 다른 데이터에 영향을 많이 받아서 dirty read라고도 함
read commited - 커밋된 데이터만 읽기 가능 👉 커밋된 트랜잭션의 영향을 받아 데이터가 갑자기 나타나므로 phantom read라고도 한다
repeatable read - Tx이 시작된 이후의 변경은 무시됨 👉 default // 변경을 하는 동안은 반영이 안되다가 커밋 이후에 새 Tx를 시작해야 반영
serializable - 한번에 하나의 Tx만 독립적으로 수행 (직렬수행) 👉 고립도 가장 높음. 읽는건 상관없으나 변경은 동시에 불가
'🔥 Vamos > Spring' 카테고리의 다른 글
0213 | 스프링의 정석 :: 3-19 (@Transactional) (0) | 2023.02.13 |
---|---|
0212 | 스프링의 정석 :: 3-18 (AOP) (0) | 2023.02.12 |
0205 | 스프링의 정석 :: 3-16 (0) | 2023.02.06 |
0204 | 스프링의 정석 :: 3-15 (DAO) (0) | 2023.02.05 |
0203 | 스프링의 정석 :: SQL 문법 오류 (0) | 2023.02.04 |