-> 블로그 이전

[DB] Transaction? ACID?

2022. 3. 5. 17:48Major`/DB

트랜잭션 (Transaction)

- 여러 작업들을 하나로 묶은 단위

- 그렇게 묶여진 한 그룹단위 작업들은 모두 실행되거나 모두 실행되지 않는다 :: All-Or-Nothing 

 

트랜잭션이 필요한 이유?

Example) "A 은행 → B 은행으로 돈 보내기"

1. 일단 A 은행에서 보낼 돈을 출금해야 한다

2. B 은행으로 출금한 돈 보내기

 

여기서 (1) 과정을 마치고 은행 시스템이 마비되면?

"돈은 A 은행에서 출금이 되었지만 해당 돈이 송금되지 않고 증발한다"

 

>> Transaction을 통해서 데이터의 유효성을 보장해야 한다

 


ACID?

- 데이터의 유효성을 보장하기 위해서, 트랜잭션의 특징들의 앞글자를 딴 단어

 

Atomicity (원자성)

- 모든 작업이 반영되거나 모두 롤백되는 특성

>> COMMIT? ROLLBACK?

 

- "Atomicity"를 통해서 오류가 발생해도 데이터 손실/손상이 방지된다

 

Consistency (일관성)

- 트랜잭션 작업이 시작되기 전에 DB 상태가 일관된 상태였다면 → 트랜잭션 작업이 종료되어도 DB 상태가 일관적이어야 한다

- 데이터는 미리 정의된 규칙에서만 수정이 가능한 특성을 의미

>> 숫자 컬럼에는 숫자만, 문자열 컬럼에는 문자열만 저장되도록 보장

 

- "Consistency"를 통해서 데이터의 오류/손상 때문에 데이터 무결성에 의도치 않은 결과가 발생하지 않는다

 

Isolation (고립성)

- 트랜잭션 작업 수행 중에는 다른 트랜잭션에 영향을 주면 안되고, 다른 트랜잭션으로부터 간섭을 받아도 안된다

- 트랜잭션 자신은 고립된 상태에서 수행되어야 한다

 

Durability (지속성)

- 한번 COMMIT된 트랜잭션의 내용은 영원히 적용된다