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만 독립적으로 수행 (직렬수행) 👉 고립도 가장 높음. 읽는건 상관없으나 변경은 동시에 불가

 

 

 

+ Recent posts