트랜잭션과 ACID

YEZI·2021년 10월 31일
0

Database

목록 보기
1/1

트랜잭션

데이터베이스 내에서 하나의 논리적 기능을 수행하는 작업의 단위이며, 하나 이상의 쿼리로 구성된다.

  • 트랜잭션이 오류없이 실행을 마치면 commit을 수행한다.
  • 트랜잭션 처리 중간에 실행이 중단되었을 경우, Rollback을 수행한다.

즉, 한 번 질의가 실행되면(하나의 트랜잭션이 실행되면) 질의가 모두 수행되거나 모두 수행되지 않는다.

ACID

트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 4가지 특성. 트랜잭션은 ACID를 모두 만족해야 한다.

  • Atomic(원자성): 트랜잭션의 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력이다. 예를 들어, 자금 이체는 성공할 수도 실패할 수도 있지만 보내는 쪽에서 돈을 빼 오는 작업만 성공하고 받는 쪽에 돈을 넣는 작업을 실패해서는 안 된다. 원자성은 이와 같이 중간 단계까지 실행되고 실패하는 일이 없도록 하는 것이다.
  • Consistency(일관성): 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것
  • Isolation(고립성): 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것. 고립성이 높을수록 성능은 떨어진다.
  • Durability(지속성): 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함. commit을 하면 현재 상태는 영원히 보장된다. 전형적으로 모든 트랜잭션은 로그로 남고 시스템 장애 발생 전 상태로 되돌릴 수 있다. 트랜잭션은 로그에 모든 것이 저장된 후에만 commit 상태로 간주될 수 있다.

    출처: 위키백과
    https://ko.wikipedia.org/wiki/ACID

DB 별 commit 방법

  • MySQL: auto-commit된다.
  • Oracle DB: commit을 직접 해주어야 한다.

0개의 댓글