정보처리기사 : SQL 응용 - 데이터베이스 기본 (1)

keymu·2024년 9월 23일
0

1. 트랙잭션:

1) 개념

인가받지 않은 사용자로부터 데이터를 보장하기 위해 DBMS가 가져야 하는 특성이자, 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위이다.

2) 특성

  • Atomicity(원자성): All or Nothing / 주요기법>>Commit, Rollback / 회복성 보장
  • Consistency(일관성): 시스템의 고정요소는 트랜잭션 전/후 상태 같아야 함 / 무결성 제약조건, 동시성 제어
  • Isolation(고립성): 동시에 실해되는 트랜재션이 서로 영향을 미치지 않아야 함 / 고립화 수준(레벨 0,1,2,3)
  • Durability(영속성): 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장되어야 하는 성질 / 회복기법

3) 트랜잭션 상태 변화:

  • Active(활동상태)
  • Partially Committed(부분 완료 상태): 마지막 명령문이 실행된 후에 가지는 상태
  • Committed(완료 상태): 트랜잭션이 성공적으로 완료
  • Failed(실패 상태): 정상적 실행이 더 이상 진행될 수 없을 때
  • Aborted(철회상태): 트랜잭션 취소 / DB 트랜잭션 시작 전 상태로 환원

4) 트랜재션 제어:

  • 트랜잭션 제어 언어: TCL(Transaction Control Language)

    TCL 명령어:
    -Commit: 트랜잭션 확정
    -Rollback: 트랜잭션 취소
    -Checkpoint: 저장 시기 설정(Rollback 시점 지정)

5) 병행제어(일관성 주요 기법):
개념: 다수 사용자 환경에서 여러 트랜잭션 수행 시, DB 일관성 유지 위한 상호작용 제어 기법
목적: DB 공유 최대화 / 시스템 활용도 최대화 / 일관성 유지 / 사용자에 대한 응답시간 최소화
종류:

  • Locking: 실행 중인 트랜잭션을 다른 트랜잭션이 동시 접근하지 않도록 상호배제 기능 제공

    로킹의 특징
    -DB, File, Record 등은 로킹 단위가 될 수 있음
    -로킹 단위가 작아지면 DB 공유도 증가
    -로킹 단위가 작아지면 로킹 오버헤드 증가
    -한꺼번에 로킹할 수 있는 객체 크기 = 로킹 단위

  • Optimistic Validation(낙관적 검증): 어떠한 검증도 수행하지 않고 일단 트랜잭션을 수행하고, 종료 시 검증 수행하여 DB에 반영

  • Time Stamp Ordering(타임 스탬프 순서): 트랜잭션 실행 전에 타임 스탬프 부여하여 부여된 시간에 따라 작업 수행

  • MVCC(Multi Version Concurrency Control=다중버전 동시성 제어): 트랜잭션의 타임스탬프와 접근하려는 데이터의 타임스탬프를 비교, 직렬가능성이 보장되는 버전을 선택하여 접근

  • 2PC(2 Phase Commit): 동시성 제어 기술 중 하나. 여러 개 분산 DB 데이터베이스 시스템에서 트랜재션의 일관성 유지 위한 기법

    -1 단계: 준비단계. 트랜잭션 수행 결과를 다른 분산 시스템에 알림
    -2단계: 커밋단계. 모든 분산 시스템에서 트랜잭션 수행 결과가 일치하는 지 확인. 트랜잭션 모두 성공 시 커밋 수행, 아니면 롤백 수행

6) DB 고립화 수준(격리성 주요 요법):
다른 트랜잭션이 현재의 데이터 무결성을 해치지 않기 위해 잠금을 설정하는 정도
종류:

  • Read Uncommitted: 한 트랜잭션에서 연산(갱신)중인, 아직 커밋되지 않은 데이터를 다른 트랜잭션이 읽는 것을 허용하는 수준 / 연산(갱신)중인 데이터에 대한 연산은 불허
  • Read Committed: 한 트랜잭션에서 연산(갱신)을 수행할 때, 연산이 완료될 때까지 연ㅅ나 대상 데이터에 대한 읽기를 제한하는 수준 / 연산이 완료되어 커밋된 데이터는 다른 트랜잭션이 읽기 허용
  • Repeatable Read: 선행 트랜잭션이 특정 데이터를 읽을 때, 트랜잭션 종료 시까지 해당 데이터에 대한 갱신, 삭제를 제한하는 수준
  • Serializable Read: 선행 트랜잭션이 특정 데이터 영역을 순차적으로 읽을 때, 해당 데이터 영역 전체에 대한 접근 제한하는 수준

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

  • 트랜잭션을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이전의 정상적 상태로 복구시키는 작업

REDO

  • 데이터베이스가 비정상적으로 종료되었을 때 디스크에 저장된 로그를 분석하여 트랜잭션의 시작(Start)과 완료(Commit)에 대한 기록이 있는 트랜잭션들의 작업을 재작업하는 기법.
  • DB 내용 자체 손상 시, 가장 최근의 복제본을 적재한 후 이후 일어난 변경만을 로그를 이용하여 재실행함으로써 DB 복원 기법

UNDO

  • 데이터베이스가 비정상적으로 종료되었을 때 디스크에 저장된 로그를 분석하여 트랜잭션의 시작(Start)는 있지만, 완료(Commit) 기록이 없는 트랜잭션들이 작업한 변경 내용들을 모두 취소하는 기법
  • DB 내용 자체는 손상되지 않았지만, 변경 중이거나 변경된 내용에 대한 신뢰성을 잃어버린 경우, 모든 변경 내용을 취소하여 복원하는 기법

회복기법 종류

  • 로그기반 회복기법:

    자연 갱신 회복 기법(Deferred Update): 트랜잭션이 완료되기 전까지 데이터베이스에 기록하지 않는 기법
    즉각 갱신 회복 기법(Immediate Update): 트랜잭션 수행 중 갱신 경과를 바로 DB에 반영하는 기법

  • 체크 포인트 회복 기법(Checkpoint Recovery): 장애 발생 시 검사점 이후에 처리된 트랜잭션에 대해서만 장애 발생 이전의 상태로 복원
  • 그림자 페이징 회복 기법(Shadow Paging Recovery): DB 트랜잭션 수행 시 복제본을 생성하여 DB 장애 시 이를 이용해 복구하는 기법
profile
Junior Backend Developer

0개의 댓글