포스트

3. transaction

3. transaction

Transaction (23. 12. 01)

트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미

Transaction이 필요한 순간

  • A → B 에게 10,000원을 송금한다면?
  • A와 B는 동시에 Update 되어야한다.
  • 계좌에서 B계좌로 10,000 이체되는 과정은 다음과 같습니다.

    1. 데이터베이스에서 A의 은행계좌잔고 값을 메인 메모리로 읽어옵니다.
      1. 읽어온 A의 잔고 값에서 10,000을 감소시킵니다.
      2. 데이터베이스에서 B의 은행계좌잔고 값을 메인 메모리로 읽어옵니다.
      3. 읽어온 B의 잔고 값을 10,000 증가시킵니다.
      4. A의 계좌 값을 데이터베이스에 기록합니다.
      5. B의 계좌 값을 데이터베이스에 기록합니다.

Transaction 속성

  • 원자성
    • 트랜잭션의 수행결과는 전부 수행되거나 전부 수행되지 않아야한다.
    • 작업 중 문제가 생기면 최초의 상태로 돌아가는 RollBack 이 작동되어야 한다.
  • 일관성
    • 트랜잭션 수행 후 모델의 모든 제약 조건을 만족해야 한다.
    • null, 정수 값… 등등 명시적 무결성 제약 조건 만족
  • 고립성
    • 트랜잭션은 다른 트랜잭션에 영향을 미치지 않아야한다.
    • 임계 구역 처럼 두개의 트랜잭션이 한 데이터에 영향을 미친다면…?
    • connection.setAutoCommit(false); 로 고립성을 완성
  • 지속성
    • 트랜잭션의 성공 결과는 장애 등에도 변함없이 영구적으로 저장되어야한다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.