Posts 데이터베이스 정리 5 - 트랜잭션 (Transaction)
Post
Cancel

데이터베이스 정리 5 - 트랜잭션 (Transaction)


트랜잭션 (Transaction)

트랜잭션이란 데이터베이스의 상태를 변경시키는 한 개의 논리적 작업의 단위를 뜻한다.

트랜잭션의 성질

  • 원자성 (Atomicity)
    한개의 트랜잭션 연산은 데이터베이스에 모두 반영되거나, 아무것도 반영되지 않아야 한다(All or nothing).
    즉, 트랜잭션 내에서 한개의 연산이라도 오류가 발생한다면, 해당 트랜잭션은 모두 취소 되어야 한다.

  • 일관성 (Consistency)
    특정 트랜잭션이 수행되기 전에 데이터베이스가 일관된 상태를 가진 경우, 트랜잭션 실행 후에도 데이터베이스는 일관된 상태를 가져야 한다.
    트랜잭션이 실행되는 동안, 데이터베이스는 일시적으로 일관된 상태를 유지하지 못할 수 있다.

  • 독립성 (Isolation)
    한개의 트랜잭션이 실행되는 동안 다른 트랜잭션은 해당 연산에 접근할 수 없다.
    수행중인 트랜잭션이 완료되기 전까지, 다른 트랜잭션에서 해당 결과를 참조 할 수 없다.
    여러 트랜잭션이 동시에 처리 될 때, 최종 결과는 임의의 순서로 트랜잭션들을 실행한 결과와 같아야 한다.

  • 지속성 (Durability)
    트랜잭션이 성공적으로 완료되었다면, 해당 결과는 시스템이 고장나더라도 반영되어야 한다.
    컴퓨터 시스템에 오류가 있어도 해당 결과는 손실되지 않아야 한다.

트랜잭션 연산 종류

  • Commit
    트랜잭션 작업이 성공적으로 끝나고 데이터베이스가 다시 일관된 상태로 돌아갔을 때 관리자에게 해당 작업이 완료되었음을 알려주는 연산

  • Abort
    트랜잭션이 부분적으로 완료된 경우, 원자성을 보장하기 위해 해당 트랜잭션이 수행한 모든 연산을 취소하는 연산

트랜잭션의 상태

Terms

  • Active : 트랜잭션이 실행 중인 상태
  • Failed : 실행 중 오류가 발생해서 중단된 상태
  • Aborted : 비정상 종료로 인해 Rollback 연산을 수행한 상태
  • Partially Committed : 트랜잭션 연산이 성공적으로 끝났지만, Commit 연산이 실행되기 전 상태
  • Committed : 트랜잭션이 성공적으로 종료되어 Commit 연산을 수행한 상태

동시성 제어 (Concurrency control)

트랜잭션들을 동시에 실행한 것과 순차적으로 실행간의 동일한 결과를 보장한다.

Locking

  • 동시성 제어를 위해 널리 사용되는 방법
  • Lock은 Shared-lock(S-lock, 읽기), eXclusive-lock(X-lock, 쓰기) 모드가 있음
  • 트랜잭션은 값을 수정하기 위해 데이터베이스에 접근할 때, X-lock을 요청
  • 트랜잭션은 값을 읽기 위해 데이터베이스에 접근할 때, S-lock을 요청
  • 트랜잭션은 연산을 하기전에 항상 lock을 먼저 획득해야 함
  • 한 개의 트랜잭션이 lock을 획득한 경우, 해당 항목에 대한 lock은 잠김 상태
  • 트랜잭션이 해당 항목에 대한 액세스를 마치면 잠금을 해제

2-phase locking protocol

  • 잠금 확장(expanding) 단계 (1단계)
    이 단계에서 트랜잭션은 데이터 항목에 대한 새로운 잠금 요청은 가능하지만, 잠금을 해제할 수는 없음
    S-lock, X-lock을 요청하거나, S-lock을 X-lock으로 변환하는 것만 허용

  • 잠금 계약(Contracting) 단계 (2단계)
    이 단계에서는 잠금을 해제 할 수는 있지만, 새 잠금을 요청할 수는 없음
    잠금을 부분적으로 해제하거나, 트랜잭션 완료시 한번에 모두 해제할 수 있음
    S-lock, X-lock을 해제하거나, X-lock을 S-lock으로 변환하는 것만 허용

Deadlock

락 기반 프로토콜에서 발생할 수 있음
두 개이상의 트랜잭션이 서로 잠금을 요청하는 동안 계속 대기상태에 있음
해결하기 위해 데드락 예방 방식이나, 데드락 해결 방식을 사용해야 함

This post is licensed under CC BY 4.0 by the author.

[알고리즘] 프로그래머스 - 기둥과 보 설치

[프로그래머스 인공지능스쿨] Week2-1 인공지능 수학 : 선형대수