새소식

CS

ACID란?

  • -

 

트랜잭션은 데이터베이스에서 작업이 수행되는 하나의 단위로 이러한 작업들이 안전하게 수행되는 것을 보장하기 위한 ACID라는 성질이 존재한다. ACID는 순서대로 Atomicity(원자성), Consistency(일관성), Isolation(격리성), Durability(지속성)을 의미한다.

Atomicity

 

Atomicity(원자성)은 트랜잭션 내부 연산들이 모두 성공하던지 혹은 모두 실패해야 한다는 것이다. 예를 들어

 

A 계좌에서 1000원 출금
B 계좌로 1000원 입금

 

위와 같은 트랜잭션이 존재한다면 출금과 입금이 모두 성공하던지 혹은 모두 실패해야 한다.

Consistency

 

Consistency(일관성)은 트랜잭션이 성공하면 해당 데이터베이스가 일관된 상태로 유지되는 것을 보장하는 것이다. 만약 트랜잭션이 데이터베이스의 제약조건을 위반한다면 해당 트랜잭션은 취소되어야 한다.

 

예를 들어 출금 과정에서 A 계좌의 잔액이 음수가 되어버린다면 해당 트랜잭션은 롤백되어야 하고 이를 통해 데이터베이스가 일관된 상태를 유지할 수 있다.

 

Isolation

 

Isolation(고립성)은 실행되는 트랜잭션들이 서로 독립적임을 보장하는 것이다. 즉 어떠한 트랜잭션도 다른 트랜잭션의 도중에 끼어들 수 없다는 말인데, 예를 들어 A 계좌와 B 계좌의 합이 처음에 20000으로 시작하지만 출금과 입급이 발생하는 도중에 두 계좌의 합이 20000이 되지 않는 상황이 무조건 존재할 것이다. 이때 다른 트랜잭션이 도중에 해당 값을 읽어버리면 결과가 이상해지는 문제가 발생할 수 있다. 이때 Isolation 속성을 통해 다른 트랜잭션은 항상 잔고의 총합인 20000만 볼 수 있게 보장함으로써 이러한 문제를 해결한다.

 

DBMS는 Isolation 속성을 위해  여러 종류의 Isolation Level을 제공하는데, 개발자는 이때 어떤 레벨로 트랜잭션을 실행시킬지 설정할 수 있다. 이로써 데이터베이스의 동시성 제어가 가능하다.

Durability

 

Durability(지속성)은 성공적으로 수행된 트랜잭션은 영구적으로 반영되어야 함을 보장하는 속성이다. 만약 트랜잭션 처리 도중 시스템에 장애가 발생해도 로그를 통해 추후 시스템이 복구되었을 때 데이터베이스를 회복한다.

'CS' 카테고리의 다른 글

이건 첫 번째 레슨, 복합 인덱스 쓰기  (2) 2025.07.29
프로세스와 스레드 : 컨텍스트 스위칭에 대해  (0) 2025.03.03
REST란?  (0) 2025.02.26
캐싱 전략에 대해  (0) 2025.02.25
로드 밸런싱에 대해...  (0) 2025.02.21
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.