[CS] 트랜잭션

장다슬·2024년 4월 20일

CS 스터디

목록 보기
11/23

데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위로, 일련의 연산들을 하나의 묶음으로 처리한다.

상태를 변화시킨다 ➡️ SQL 질의어를 통해 DB에 접근하는 것

질의어
SELECT, INSERT, DELETE, UPDATE

작업 단위 ➡️ SQL 명령문들을 사람의 기준에 따라 정하는 것

상황) 사용자 A가 사용자 B에게 만원 송금

- A, B의 계좌 잔고가 변경되므로 출금 및 입금 UPDATE 작업 발생
  이를 통틀어 하나의 작업 단위인 트랜잭션이라고 한다.
  
- 작업 단위(트랜잭션)에 속하는 쿼리(출금 UPDATE & 입금 UPDATE) 중 
  하나라도 실패하면 모든 쿼리문을 취소하고 이전 상태로 되돌려야함

특징

1. 원자성 Atomicity

  • 트랜잭션 내의 연산들은 DB에 모두 반영되거나, 혹은 전혀 반영되지 않아야 된다.
  • 연산이 하나만 성공하거나 실패해서는 안 된다.
  • 예) 은행에서 송금을 할 때 출금 및 입금 두 연산이 모두 성공해야 함

2. 일관성 Consistency

  • 트랜잭션의 작업 처리 결과는 항상 일관된 상태로 유지되어야 한다.
  • 예) 계좌 이체 후에도 모든 계좌의 잔액 합계는 변하지 않아야 함

3. 독립성 Isolation

  • 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 한다.
  • 다른 트랜잭션의 중간 상태를 볼 수 없으며, 각각 트랜잭션은 독립적으로 실행되어야 한다.

4. 지속성 Durability

  • 트랜잭션이 성공적으로 완료된 후에는 결과가 영구적으로 반영되어야 한다.
  • 트랜잭션 완료 후에 시스템이 실패하더라도 데이터베이스의 상태는 트랜잭션 수행 전과 동일하게 유지되어야 한다.

그 외

commit

  • 모든 작업들이 정상적으로 처리됐을 때, 해당 처리 과정을 DB에 영구 저장하는 명령어
  • commit 수행 시 하나의 트랜잭션 과정이 종료되고, 이전 데이터가 완전히 반영되어 UPDATE 된다.

rollback

  • 작업 중 문제 발생 시 트랜잭션의 처리 과정에서 발생한 변경 사항을 취소하는 명령어
  • 트랜잭션은 시작되기 이전의 상태로 되돌아감
  • 즉, 마지막으로 commit을 완료한 시점으로 돌아감

참고:
gyoogle/tech-interview-for-developer/Computer Science/Database/Transaction.md
[MYSQL] 트랜잭션(Transaction) 개념 & 사용 완벽 정리

profile
반갑습니다

0개의 댓글