[정보처리기사] SQL응용 - 트랜잭션, TCL

이아현·2023년 7월 1일
0

정보처리기사

목록 보기
1/11
post-thumbnail

1. 트랜잭션


✅ 트랜잭션의 개념

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

✅ 트랜잭션의 특성

  • 원자성 : 트랜잭션을 구성하는 연산 전체가 모두 정상적으로 실행되거나 모두 취소
  • 일관성 : 시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 동일
  • 격리성(고립성) : 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 함
  • 영속성 : 완료된 트랜잭션의 결과는 영속적으로 DB에 저장되어야 하는 성질

✅ 트랜잭션의 상태 변화

  • 활동 상태
  • 부분 완료 상태
  • 완료 상태
  • 실패 상태
  • 철회 상태

✅ 트랜잭션 제어

  • TCL(Transaction Control Language) : 트랜잭션 제어 언어
  • 트랜잭션의 결과를 허용하거나 취소하는 목적으로 사용
명령어핵심설명
commit트랜잭션 확정트랜잭션을 메모리에 영구적으로 저장하는 명령어
rollback트랜잭션 취소트랜잭션 내역의 저장을 무효화시키는 명령어
checkpoint저장 시기 설정rollback을 위한 시점을 지정하는 명령어

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

  • 병행 제어 : 다수 사용자 환경에서 여러 트랜잭션을 수행할 때, DB의 일관성 유지를 위해 상호작용을 제어하는 기법
  • 목적
    • DB의 공유를 최대화
    • 시스템의 활용도를 최대화
    • DB의 일관성 유지
    • 사용자에 대한 응답시간 최소화
  • 미보장 시 문제점
    • 갱신 손실 : 먼저 실행된 트랜잭션의 결과를 나중에 실행된 트랜잭션이 덮어쓸 때 발생하는 오류
    • 현황 파악 오류 : 트랜잭션의 중간 수행 결과를 다른 트랜잭션이 참조하여 발생하는 오류
    • 모순성 : 두 트랜잭션이 동시에 실행되어 DB의 일관성이 결여되는 오류
    • 연쇄복귀 : 복수의 트랜잭션이 데이터를 공유할 때 특정 트랜잭션이 처리를 취소할 경우 트랜잭션이 처리된 곳의 부분을 취소하지 못하는 오류
  • 종류
    • 로킹
      • 하나의 트랜잭션을 실행하는 동안 특정 데이터 항목에 대해서 다른 트랜잭션이 동시에 접근하지 못하도록 상호배제 기능을 제공
    • 낙관적 검증
      • 어떠한 검증없이 트랜잭션을 수행, 종료 시 검증을 수행하여 DB에 반영
    • 타임 스탬프 순서
      • 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 실행 전 타임 스탬프를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행
    • 다중버전 동시성 제어
      • 트랜잭션의 타임스탬프와 접근하려는 데이터의 타임스탬프를 비교하여 직렬가능성이 보장되는 적절한 버전을 선택하여 접근하도록 함

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

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

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

  • 회복기법 : 트랜잭션을 수행하는 도중 장애로 인해 손상된 DB를 손상되기 이전의 정상적인 상태로 복구시키는 작업
  • 회복기법 주요 요소
    • REDO : DB가 비정상적으로 종료되었을 때 디스크에 저장된 로그를 분석, 트랜잭션의 시작, 완료에 대한 기록이 있는 트랜잭션의 작업을 재작업
    • UNDO : DB가 비정상적으로 종료되었을 때 디스크에 저장된 로그를 분석, 트랜잭션의 시작은 있지만 완료가 없는 기록의 트랜잭션들이 작업한 변경 내용들을 모두 취소
  • 회복기법 종류
    • 로그 기반 회복 기법
    • 체크 포인트 회복 기법
    • 그림자 페이징 회복 기법
profile
PM을 지향하는 FE 개발자 이아현입니다 :)

0개의 댓글