Transaction && ACID

진성·2022년 8월 7일
0
post-thumbnail

Transaction?

컴퓨터 과확 부분에서 트랜잭션(Transaction)이란 쪼갤 수 없는 업무 처리의 최소단위를 말한다.

데이터베이스에서 데이터의 상태변화를 해야 할때, 즉 테이블에서 데이터를 읽어 온 후 다른 테이블에 데이터를 입력하거나 갱신, 삭제 처리를 할 때 중간에 예기치 못한 에러로 인해 데이터가 원하지 않은 상태로 변경이 되지 않게 에러가 발생하면 작업을 중단하고 원래의 상태로 되돌리게 된다.

위와 같이 데이터의 안정성을 확보하는 방법이 트랜잭션이다.
데이터베이스에선 처리 과정이 모두 성공했을 때만 최종적으로 데이터베이스에 반영을 한다.

예를 들어 내 계좌의 잔액에서 이체한 금액만큼 빼는 일과, 상대 계좌의 잔액에서 해당만큼 더하는 일은 쪼개어져서는 안된다.
두가지 명령 중 하나만 실행되서는 안되며 하나의 업무로 함께 진행되어야 하는 일이기 때문이다.
위와 같이 더이상 쪼갤 수 없기 때문에 일부만 동작해선 안된다는 것이 트랜잭션의 핵심이다.

이러한 트랜잭션을 처리하기 위해 데이터베이스는 다음의 두가지 명령어를 활용하는데, 커밋과 롤백이다.

  • 커밋(Commit): 모든 부분작업이 정상적으로 완료하면 이 변경사항을 한꺼번에 DB에 반영한다.
  • 롤백(RollBack): 부분 작업이 실패하면 트랜잭션 실행적으로 되돌린다.
    하나의 트랜잭션 처리가 비정상적으로 종료되어 데이터베이스 일관성을 깨트렸을 때 트랜잭셕의 일부가 정상적으로 처리되었더라도 트랜잭션의 원자성을 구현하기 위해 이 트랜잭션이 행한 모든 연산을 취소하는 연산이다.

이때 모든 연산을 취소하지 않고 정해진 부분까지만 되돌리고 싶을 때 사용하는 것이 savepoint 이다.

SAVEPOINT

  • 일반적으로 ROLLBACK을 명시하면 INSERT, DELETE, UPDATE 등의 작업 전체가 취소되지만,
  • SAVEPOINT를 사용하면 전체가 아닌 특정 부분에서 트랜잭션을 취소시킬 수 있다.
  • 취소하려는 지점을 SAVEPOINT로 명시한뒤 ROLLBACK TO 이름을 실행하면 지정한 해당 SAVEPOINT 지점까지 처리한 작업이 ROLLBACK 된다.

ACID

ACID는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 트랜잭션의 특징을 말한다.

  • 원자성(Atomicity) : 트랜잭션이 DB에 모두 반영되거나, 혹은 전혀 반영되지 않아야 한다.
  • 일관성(Consistency) : 트랜잭션의 작업 처리 결과는 항상 일관성이 있어야 한다.
  • 독립성(Isolation) : 둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 때, 어떤 트랜잭션도 다른 트랜잭션 연산에 끼어들 수 없다.
  • 영속성(Durability) : 트랜잭션이 성공적으로 완료 되었으며 결과는 영구적으로 반영되어야 한다.

출처 : 트랜잭션(Transaction)이란?

profile
풀스택 진행중...

0개의 댓글