certification/정보처리산업기사

[DB] 트랜잭션의 4가지 특성(ACID)

gaing 2024. 10. 20. 02:34

트랜잭션(Transaction)

💡 데이터베이스 관리 시스템(DBMS)에서 데이터의 상태를 변환시키는 하나의 작업 단위
  • 사용자가 수행하는 일련의 작업들을 하나의 논리적 단위로 묶은 것으로, 주로 데이터베이스의 일관성을 유지하기 위해 사용된다.

 

트랜잭션의 특성(ACID)

원자성(Atomicity)

트랜잭션 내의 작업이 모두 완벽하게 실행되거나, 전혀 실행되지 않아야 함을 의미한다.

 
트랜잭션의 수행 중 일부만 완료되는 상황은 발생할 수 없고, 성공하면 모든 작업이 완료되고, 실패하면 모든 작업이 취소되어야 한다.
이로 인해 트랜잭션 내의 작업들이 하나의 단일 작업처럼 취급된다.

예시

은행에서 계좌 이체를 할 때, 송금 계좌에서 출금수신 계좌에 입금이 하나의 트랜잭션이다.
이 두 작업 중 하나라도 실패하면, 전체 작업이 실패하여 출금된 금액도 취소되어야 한다.
 
 

일관성(Consistency)

트랜잭션이 실행된 후에도 데이터베이스의 일관성이 유지되어야 함을 의미한다.

 
트랜잭션이 성공적으로 완료되면, 데이터베이스는 정상적인 상태(일관성 있는 상태)로 남아있어야 한다.
일관성은 트랜잭션이 수행되기 전후에 데이터가 제약 조건이나 규칙을 항상 만족해야 한다는 의미이다.

예시

은행 계좌에서 송금을 할 때, 계좌 잔액은 항상 0보다 크거나 같아야 하는 제약 조건이 있다고 가정한다.
계좌 이체 후에도 이 조건이 항상 유지되어야 하며, 이는 트랜잭션이 데이터베이스의 일관성을 보장하는 것을 의미한다.
 
 

고립성(Isolation)

동시에 여러 트랜잭션이 실행될 때, 각 트랜잭션이 독립적으로 실행되는 것처럼 동작해야 함을 의미한다.


한 트랜잭션이 완료되기 전까지 다른 트랜잭션이 그 결과를 참조하거나 변경할 수 없도록 고립 상태를 유지한다.
이렇게 함으로써, 트랜잭션 간의 간섭이나 충돌을 방지할 수 있다.

예시

두 사용자가 동시에 같은 계좌에서 돈을 인출하려고 할 때,
고립성이 보장되지 않으면 두 트랜잭션이 동시에 실행되어 잘못된 금액이 인출될 수 있다.
하지만, 고립성이 보장되면 한 트랜잭션이 완료되기 전에는 다른 트랜잭션이 그 데이터를 참조할 수 없으므로 각 트랜잭션이 독립적으로 실행된다.

 
 

영속성(Durablility)

트랜잭션이 성공적으로 완료된 후 그 결과가 영구적으로 반영되어야 함을 의미한다.

 
트랜잭션이 완료된 후에 시스템이 충돌하거나 장애가 발생하더라도 그 트랜잭션의 결과가 손실되지 않고 데이터베이스에 반영되어 있어야 한다.

예시

사용자가 은행 계좌에서 송금을 완료하고 난 후,
시스템 장애나 전원이 꺼지더라도 송금 작업의 결과(잔액 변경)는 데이터베이스에 영구적으로 기록되어 있어야 한다.
즉, 트랜잭션이 완료된 후에는 그 결과가 반드시 유지된다.