트랜잭션

  • 데이터베이스를 접근하고 처리하는 기본 단위
  • 실행 중 멈추거나 중단되지 않는 최소 작업 단위 (원자성)
    • All or Nothing
    • 트랜잭션이 성공하여 반영되거나 실패하여 아무것도 반영되지 않거나 둘 중 한가지 결과만이 나올 수 있다. 
  • 성공하던 실패하던 값을 (DBMS가) 보장 해야한다.
  • 트랜잭션 실행 전후 데이터베이스 내용이 일관되어야 한다 (일관성)
    • 일관성의 정의는 모호함으로 프로그래머가 제대로된 정의를 해준 것에 따른다.
  • 트랜잭션이 실행하는 과정에서 갱신한 데이터는 트랜잭션이 완료될 때까지 다른 트랜잭션이 참조할 수 없다 (고립성)
    • 트랜잭션을 동시에 실행하면서 상호간에 간섭이 일어나지 않도록 하는 기법이 필요함(동시성 제어)
  • 트랜잭션이 완료되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장되어야 한다 (지속성)

데이터 베이스 입출력 원리

  • 운영체제의 I/O 버퍼 관리를 통해 작업이 완료된다.
  • 입출력 작업에는 I/O 버퍼를 거친다.
    • 플러그 비트를 보고 판단하여 입력 여부를 판단
  • 로그인: 사용자용 개인 user Memory 할당
  • 디스크에 작성: I/O 버퍼에 들어간 블럭을 디스크로 옮긴다.
    • 언제 작업이 완료되었는지는 알 수 없음 그렇기에 데이터 베이스에 저장된 값이 무엇인지 알 수 없다.
  • 사용자 입력 → 메모리 → I/O 버퍼에 → 파일 디스크
    • 이후 파일 디스크 정보 말고는 휘발성이라 소멸된다.

데이터 베이스에서 동일한 업무가 동시에 진행될 경우

  • DBMS가 해당 문제 해결
    • 락: DBMS는 해당 작업이 끝날 때까지 데이터에 락을 걸어 다른 트랜잭션이 동시에 접근하는 것을 막는다
    • 직렬화: 트랜잭션들이 순차적으로 실행되도록 하여 동시에 발생할 수 있는 문제를 막는다.
    • 최적화된 동시성 제어 기법: MVCC(Multi-Version Concurrency Control)와 같은 기법은 각 트랜잭션에 대해 데이터의 특정 버전을 제공하여 동시성 문제를 해결

트랜잭션의 상태

  • 동작: 트랜잭션이 시작되고 연산들이 정상적으로 실행 중인 상태
  • 부분완료: 트랜잭션에 정의된 모든 연산의 실행이 끝난 상태
  • 완료: 트랜잭션이 성공적으로 종료된 상태 All
  • 실패: 트랜잭션이 완료되지 못하고 더 이상 실행되지 못하는 상태
  • 중단: 트랜잭션이 실패 한 후 실행되기 이전으로 복귀된 상태 Nothing

'CS > DataBase' 카테고리의 다른 글

직렬 가능한 스케줄이 되도록 하는 방법  (0) 2023.05.31
동시성 제어  (0) 2023.05.22
정규화  (0) 2023.05.19
개체 관계  (0) 2023.05.10
데이터베이스 설계  (0) 2023.04.30

+ Recent posts