본문 바로가기
DBMS/데이터베이스

[데이터베이스] 트랜잭션 개념과 관리 방안 수립

by 클레어몬트 2025. 2. 6.

데이터베이스에서 트랜잭션 관리는 필수적인 요소이다. 데이터의 무결성을 유지하고, 동시 접근을 효율적으로 제어하며, 장애 발생 시 복구할 수 있도록 설계해야 한다. 이를 위해 트랜잭션 관리 방안을 수립하는 것이 중요하다. 이번 포스팅에서는 트랜잭션 개념과 트랜잭션 관리 방안, 그리고 트랜잭션의 상태 변화까지 알아보고자 한다!

 

 

ㅁ트랜잭션(transaction): 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위

 

(트랜잭션 관리의 중요성)

하나의 트랜잭션은 여러 개의 작업(쿼리)으로 구성될 수 있으며, 모든 작업이 성공적으로 완료되어야만 데이터베이스에 반영된다. 트랜잭션 관리를 통해 다음과 같은 기능을 제공할 수 있다.

  • 데이터 무결성 유지
  • 동시 접근 제어(락을 사용)
  • 장애 발생 시 복구 기능 제공

 

ACID 속성

 

트랜잭션이 올바르게 수행되기 위해서는 ACID 속성을 준수해야 한다. ACID는 다음 네 가지 속성으로 구성된다.

  • 원자성(Atomicity): 트랜잭션의 모든 연산이 완전히 수행되거나 전혀 수행되지 않아야 한다
  • 일관성(Consistency): 트랜잭션이 실행된 후에도 데이터베이스가 일관된 상태를 유지해야 한다
  • 격리성(Isolation): 동시에 실행되는 트랜잭션이 서로 영향을 주지 않아야 한다
  • 지속성(Durability): 트랜잭션이 완료된 후에도 결과가 영구적으로 저장되어야 한다

 

트랜잭션 제어 기능들

 

트랜잭션을 효과적으로 관리하기 위해 다양한 트랜잭션 제어 기능을 제공한다. 대표적인 트랜잭션 제어 기능은 다음과 같다.


1. 트랜잭션 시작과 종료
- BEGIN TRANSACTION: 트랜잭션의 시작을 명시적으로 선언한다.

- 커밋(COMMIT): 모든 작업을 정상적으로 수행한 후 변경 사항을 데이터베이스에 영구적으로 반영한다.

- 롤백(ROLLBACK): 오류 발생 시 변경 사항을 취소하고 트랜잭션을 초기 상태로 되돌린다.

 

※ 트랜잭션의 상태 변화

트랜잭션은 수행 중 특정 상태를 거치며 최종적으로 커밋되거나 롤백된다. 각각의 상태에서 데이터의 접근성과 잠금 상태가 다르게 동작한다.

 

① 커밋(Commit) 혹은 롤백(Rollback) 하기 전 상태

  • 모든 데이터의 변경 사항은 데이터베이스 버퍼(Database Buffer)에 저장된다.
  • 현재 트랜잭션을 수행하는 사용자는 자신이 변경한 데이터를 SELECT 문을 통해 볼 수 있지만 "다른 사용자는 그 변경된 내용을 확인할 수 없다"
  • 트랜잭션이 변경한 데이터(Row)는 잠금(Lock) 상태에 놓이며, 다른 사용자가 해당 데이터를 수정할 수 없다.
  • 이러한 방식은 Row Level Locking Mechanism을 기반으로 한다.

② 커밋(Commit) 한 후의 상태

  • 트랜잭션 내에서 변경된 데이터가 데이터베이스에 영구적으로 반영된다.
  • "다른 모든 사용자가 해당 데이터를 조회할 수 있다"
  • 해당 데이터(Row)에 설정된 잠금(Lock)이 해제된다.


2. 동시성 제어
- 낙관적 동시성 제어(Optimistic Concurrency Control): 트랜잭션 간 충돌이 드물다고 가정하고, 변경 사항을 최종적으로 검증하여 충돌이 발생하면 롤백하는 방식이다.


- 비관적 동시성 제어(Pessimistic Concurrency Control): 트랜잭션이 실행되는 동안 을 걸어 충돌을 사전에 방지하는 방식이다.

 


3. 트랜잭션의 격리 수준 설정(성능과 동시성 최적화)
- READ UNCOMMITTED: 커밋되지 않은 데이터를 읽을 수 있어 성능은 좋지만 일관성이 낮다.

- READ COMMITTED: 커밋된 데이터만 읽을 수 있어 데이터의 일관성을 보장한다.

- REPEATABLE READ: 동일한 데이터를 여러 번 조회해도 결과가 변하지 않도록 보장한다.

- SERIALIZABLE: 가장 높은 수준의 격리를 제공하지만 성능이 저하될 수 있다.

 

 

 

 

트랜잭션 관리는 데이터베이스 시스템의 신뢰성과 성능을 보장하는 중요한 요소이다. ACID 속성을 준수하면서 적절한 트랜잭션 제어 기능을 활용하면 안정적인 데이터베이스 운영이 가능하다! 중요 또 중요