DataBase

[SQLD] 트랜잭션

DH_0518 2025. 2. 23. 15:04

 

 

 

트랜잭션

 

 

 

트랜잭션

  • 데이터베이스에서 하나의 논리적 작업 단위를 의미
  • 여러 개의 작업이 하나의 트랜잭션으로 묶여, 모두 성공하거나 모두 실패하도록 보장함
  • 이를 통해 데이터의 무결성과 일관성을 유지할 수 있다

 

 

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

  • Atomicity(원자성)
    • 트랜잭션 내의 모든 작업이 '완전히 수행'되거나, '전혀 수행되지 않아야' 한다
  • Consistency(일관성)
    • 트랜잭션이 완료된 후, 데이터베이스는 항상 일관된 상태를 유지해야한다
    • 즉, 트랜잭션 실행 전 데이터베이스에 문제가 없었다면, 실행 후에도 문제가 없어야 한다
  • Isolation(격리성)
    • 트랜잭션은 독립적으로 수행되어야 한다
    • 따라서 동시에 실행되는 트랜잭션들은 서로의 작업에 영향을 주지 않아야 한다
  • Durability(지속성)
    • 트랜잭션이 성공적으로 완료되면, 그 결과는 영구적으로 저장되어야 한다

 

 

SQL에서 트랜잭션 명령어

  • BEGIN TRANSACTION
    • 새로운 트랜잭션을 생성한다
    • 트랜잭션을 시작하면 일종의 쓰기 잠금(Lock)이 발생하여, 다른 사용자가 데이터베이스의 데이터를 수정, 반영 하는 것을 막는다
  • COMMIT
    • 'commit transaction' 명령어로도 수행 가능
    • [INSERT, UPDATE, DELETE] 와 같이 트랜잭션 내의 변경사항을 데이터베이스에 영구적으로 반영하고, 락을 해제하여 트랜잭션을 완료한다
  • ROLLBACK
    • 이전 'COMMIT' 이후의 변경사항이나, 'SAVEPOINT' 이후의 모든 변경사항을 취소하고 원래대로 되돌리며, 커밋과 마찬가지로 락이 해제된다
    • 즉, 아직 COMMIT 되지 않은 '트랜잭션 내의 변경사항들'을 되돌리는 작업이다
    • 일단 커밋이 완료된 사항에 대해서는 롤백이 불가능하다
  • SAVEPOINT
    • ROLLBACK을 하기 위한 저장점을 지정한다
    • SAVEPOINT를 정의하면, 트랜잭션에 포함된 전체 작업을 ROLLBACK하는 것이 아니라 SAVEPOINT부터 변경시점까지만을 롤백한다