Cohe

7-1. SQL 응용 - 트랜잭션 본문

자격증 공부/정보처리기사 실기

7-1. SQL 응용 - 트랜잭션

코헤0121 2024. 9. 24. 20:42
728x90

1. 트랜잭션(Transaction)의 개념

  • 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위

2. 트랜잭션의 특성

  • 원자성 (Atomicity) : 연산 전체가 모두 정상적으로 실행되거나 모두 취소, Commit/Rollback
  • 일관성 (Consistency) : 고정요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 하는 성질, 무결성 제약조건, 동시성 제어
  • 격리성=고립성 (Isolation) : 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 한다는 성질
    , Read Uncommitted, Read Committed, Repeatable Read, Serializable
  • 영속성 (Durability) : 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장되어야 하는 성질,
    • 회복기법

3. 트랜잭션의 상태 변화

  • 활동 상태 (Active) : 초기 상태, 트랜잭션이 실행 중일 때 가지는 상태
  • 성공시
    • 부분 완료 상태 : 마지막 명령문이 실행된 후에 가지는 상태
    • 완료 상태 (Committed) : 트랜잭션이 성공적으로 완료된 후 가지는 상태
  • 오류시
    • 실패 상태 (Failed) : 정상적인 실행이 더 이상 진행될 수 없을 때 가지는 상태
    • 철회 상태 (Aborted) : 트랜잭션이 취소되고 데이터베이스가 트랜잭션 시작 전 상태로 됨

4. 트랜잭션 제어

  • TCL, 트랜잭션의 결과를 허용하거나 취소하는 목적으로 사용됨!
  • 커밋 : 트랜잭션을 메모리에 영구적으로 확정시키는 명령어
  • 롤백 : 트랜잭션 내역을 저장 무효화시키는 명령어
  • 체크포인트 : ROLLBACK을 위한 시점을 지정

5. 병행 제어(일관성 주요 기법)

  • 다수 사용자 환경에서 여러 트랜잭션을 수행할 때, 데이터베이스 일관성 유지를 위해 상호 작용을 제어하는 기법
  • 목적
    • 데이터베이스의 공유, 시스템의 활용도 최대화
    • 데이터베이스의 일관성을 유지한다.
    • 응답시간을 최소화
  • 병행 제어 미보장 시 갱신 손실, 현황 파악오류, 모순성, 연쇄복귀 등의 문제점이
  • 병행 제어 기법
    • 로킹 (locking) : 상호배제!! Locking!!
    • 낙관적 검증 : 일단 다 오케이 한 뒤에 드랜잭션 종료 시 검증 수행
    • 타임 스탬프 순서 : 트랜잭션 실행 전, time stamp를 부여하여 부여된 시간에 따라 작업 수행
    • 다중버전 동시성 제어 (MVCC) : 트랜잭션 타임스탬프와 접근하려는 데이터의 타임스탬프를 비교하여 직렬 가능성이 보장되는 적절한 버전을 선택하여 접근하도록 하는 기법

의문점 : 일관성 주요 기법이라고 하면 무결성 제약조건, 동시성 제어가 있는데.. 이 중 동시성 제어가 병행제어와 동일한 의미를 갖는건가? -> 맞는 듯

6. 데이터베이스 고립화 수준(격리성 주요 기법)

  • 고립화 수준 : 잠금 설정하는 정도
  • Read Uncommitted : 한 트랜잭션에서 연산 중인 데이터를 다른 트랜잭션이 읽는 것을 허용하는 수준
  • Read Committed     : 한 트랜잭션에서 연산을 수행할 때, 연산이 완료될 때까지 연산 대상 데이터에 대한 읽기를 제한하는 수준
  • Repeatable Read    : 선행 트랜잭션이 데이터를 읽을 때, 트랜잭션 종료 시까지 해당 데이터에 대한 갱신 또는 삭제를 제한하는 수준
  • Serializable Read    : 선행 트랜잭션이 데이터 영역을 순차적으로 읽을 때, 해당 데이터 영역 전체에 대한 접근을 제한하는 수준

7. 회복 기법(영속성 주요 기법)

  • 장애로 인해 손상된 데이터베이스를 손상되기 이전의 정상- 적인 상태로 복구
  • REDO
    • 데이터베이스가 비정상적으로 종료되었을 때 기록이 있는 트랜잭션들의 작업을 재작업하는 기법
    • 데이터베이스 내용 자체가 손상된 경우, 가장 최근의 복제본을 적재한 후 이후 일어난 변경만을 로그를 이용하여 재실행함으로써 데이터베이스를 복원하는 기법
  • UNDO
    • 데이터베이스가 비정상적으로 종료되었을 때 디스크에 저장된 로그를 분석하여 완료(Commit) 기록이 없는 트랜잭션들이 작업한 변경 내용들을 모두 취소하는 기법
    • 데이터베이스 내용 자체는 손상되지 않았지만, 변경 중이거나 변경된 내용에 대한 신뢰성을 잃어버린 경우, 모든 변경 내용을 취소하여 복원하는 기법
  • 로그기반 회복 기법 지연 갱신 회복 기법과 즉각 갱신 회복 기법이 있음
    • 지연 갱신 회복 기법 : 트랜잭션이 완료되기 전까지 데이터베이스에 기록하지 않는 기법
    • 즉각 갱신 회복 기법 : 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영하는 기법
    • 체크 포인트 회복 기법 : 장애 발생 시 검사점 이후에 처리된 트랜잭션에 대해서만 장애 발생 이전의 상태로 복원시키는 회복 기법
    • 그림자 페이징 회복 기법 : 데이터베이스 트랜잭션 수행 시 복제본을 생성하여 데이터베이스 장애 시 이를 이용해 복구하는 기법