STUDY

[정처기] 7과목 SQL 응용 트랜잭션 총정리

univus 2022. 10. 19. 15:20

수제비 2022 정보처리기사 실기 교재 개념 정리한 내용입니다.

 

트랜잭션

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

 

트랜잭션의 상태 변화

  • 활동상태(active) : 초기 상태, 트랜잭션이 실행 중일 때
  • 부분 완료 상태(partially commited) : 마지막 명령문이 실행된 후
  • 완료 상태(commited) : 트랜잭션이 성공적으로 완료
  • 실패 상태(failed) : 정상적인 실행이 더 이상 진행될 수 없을 때
  • 철회 상태(aborted) : 트랜잭션이 취소되고 데이터베이스가 트랜잭션 시작 전으로 환원된 상태

트랜잭션 특성(ACID)

1. 원자성(atomicity)

: 트랜잭션의 연산이 모두 실행되거나 모두 실행되지 않아야하는 특성 → commit/rollback, 회복성 보장

 

2. 일관성(consistency)

: 시스템의 고정요소는 트랜잭션이 실행되기 전과 후에 변함없이 동일하다는 성질

 

병행제어(concurrency control; 일관성 주요 기법)

: 다수 사용자 환경에서 여러 트랜잭션을 수행할 때, 데이터베이스 일관성 유지를 위해 상호작용을 제어하는 기법

 

목적

  • 데이터베이스의 공유 최대화
  • 시스템의 활용도를 최대화
  • 데이터베이스의 일관성 유지
  • 사용자 응답시간 최소화

 

병행제어 미보장시 문제점(갱현아 모연나)

  • 갱신 손실(lost update)

: 먼저 실행된 트랜잭션의 결과를 나중에 실행된 트랜잭션이 덮어쓸 때 발생하는 오류 

  • 현황 파악오류(dirty read)

: 트랜잭션의 중간 수행 결과를 다른 트랜잭션이 참조하여 발생하는 오류

  • 모순성(inconsistency)

: 두 트랜잭션이 동시에 실행되어 데이터베이스의 일관성이 결여되는 오류

  • 연쇄 복귀(cascading rollback)

: 복수의 트랜잭션이 데이터 공유 시 특정 트랜잭션이 처리를 취소할 경우 트랜잭션이 처리한 곳의 부분을 취소하지 못하는 오류

 

병행 제어 기법의 종류(~ 낙타다)

  • 로킹(locking)

: 같은 자원을 엑세스하는 다중 트랜잭션 환경, 트랜잭션이 사용하는 데이터 항목에 대해 lock한 트랜잭션이 unlock하기 전까지 독점적으로 사용할 수 있도록 하는 상호배제 기능을 제공하는 병행 제어 기법, 같은 자원을 액세스하는 다중 트랜잭션 ᅟᅪᆫ경에서 DB의 일관성과 무결성을 유지하기 위해 트랜잭션의 순차적 진행을 보장하는 직렬화 기법

  • 낙관적 검증 (optimistic validation)

: 일단 트랜잭션을 수행하고 트랜잭션 종료 시 검증을 수행하여 데이터베이스에 반영하는 기법

  • 타임 스탬프 순서(time stamp ordering)

: 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 타임 스탬프를 부여, 부여된 시간에 따라 트랜잭션 작업을 수행

  • 다중버전 동시성 제어(MVCC; multi version concurrency control)

: 트랜잭션의 타임스탬프와 접근하려는 데이터의 타임스탬프를 비교, 직렬가능성이 보장되는 적절한 버전을 선택하여 접근하도록

 

3. 격리성(=고립성, isolation)

: 동시에 실행되는 트랜잭션들이 서로 영향을 끼치지 않아야한다는 특징

 

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

: 고립화 수준(isolation level)은 다른 트랜잭션이 현재 데이터에 대한 무결성을 해치지 않기 위해 잠금을 설정하는 정도

  • read umcommited

: 한 트랜잭션에서 연산중인 데이터를 다른 트랜잭션이 읽는 것 허용(, 연산중인 데이터에 대해 연산은 불허)

  • read commited

: 연산이 완료되어 커밋된 데이터 다른 트랜잭션이 읽는 것 허용

  • repeatable read

: 선행 트랜잭션이 특정 데이터를 읽을 때, 트랜잭션 종료 시까지 해당 데이터에 대한 갱신/삭제를 제한

  • serializable read

: 선행 트랜잭션이 특정 데이터 영역을 순차적으로 읽을 때, 해당 데이터 영역 전체에 대한 접근 제한

 

 

4. 지속성(=영속성, durability)

: 성공이 완료된 트랜잭션의 결과는 데이터베이스에 영속적으로 저장되어야한다는 특징

 

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

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

 

4-1. 로그 기반 회복 기법

4-1-1. 지연 갱신 회복 기법(deferred update)

: 트랜잭션이 완료되기 전까지 데이터베이스에 기록하지 않는 기법

4-1-2. 즉각 갱신 회복 기법(immediate update)

: 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영하는 기법

 

4-2. 체크 포인트 회복 기법(checkpoint recovery)

: 장애 발생 시 검사점 이후에 처리된 트랜잭션에 대해서만 장애 발생 이전의 상태로 되돌리는 회복기법

 

4-3. 그림자 페이징 회복 기법(shadow paging recovery)

: 트랜잭션 수행 시 복제본을 생성하여 데이터베이스 장애 시 이를 이용해 복구하는 기법