트랜잭션: Difference between revisions

From CS Wiki
 
(15 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[분류:정보처리기사]][[분류:데이터베이스]]
[[분류:정보처리기사]]
[[분류:데이터베이스]]
 
;Transaction
;Transaction


= 정의 =
=정의=
* 데이터베이스 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
 
* 데이터베이스 시스템에서 복구 및 병행 수행 시 처리되는 작업의 논리적 단위
*데이터베이스 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
* 한꺼번에 수행되어야 할 일련의 연산
*데이터베이스 시스템에서 복구 및 병행 수행 시 처리되는 작업의 논리적 단위
*한꺼번에 수행되어야 할 일련의 연산
 
[[파일:트랜잭션 상태전이도.png]]
 
=[[트랜잭션 특성]]=
 
;줄여서 ACID라고 한다.
 
*원자성(Atomicity)
*일관성(Consistency)
*독립성(Isolation)
*영속성(Durability)
 
=[[트랜잭션 병행제어]]=
 
*'''병행제어의 목적'''
**시스템 활용도 최대화
**사용자에 대한 응답시간 최소화
**데이터베이스 일관성 유지
*'''트랜잭션 동시접근 시 발생 가능한 현상'''
**Dirty Write
**Dirty Read
**Non-Repeatable Read
**Phantom Read
*'''트랜잭션 고립화 수준(SQL92)'''
**레벨0~레벨3
*'''병행제어 실패 시 발생 가능한 현상'''
**갱신분실
**현황파악오류
**모순성
**연쇄복귀
*'''병행제어 기법 '''
**로킹(Locking)
**타임스탬프(Time Stamp)
**낙관적 검증
*상세 내용은 [[트랜잭션 병행제어]] 문서 참조


= 특성 =
=[[데이터베이스 회복|회복(Recovery)]]=
;줄여서 [[ACID]]라고 한다.
* '''원자성(Atomicity)'''
** 트랜잭션 연산은 데이터베이스에 모두 반영되거나 전혀 반영되지 않아야 함
** 트랜잭션의 연산 중 어느 하나가 수행되지 않으면 트랜잭션 전부가 취소되어야 함
* '''일관성(Consistency)'''
** 동일한 트랜잭션은 일관성있는 결과를 도출
** 시스템의 고정적인 요소는 트랜잭션 전후가 동일
* '''독립성(Isolation)'''
** 실행중인 트랜잭션에 다른 트랜잭션이 개입할수 없음
** 실행중인 트랜잭션을 다른 트랜잭션에서 참조할 수 없음
* '''영속성(Durability)'''
** 완료된 트랜잭션은 영속적이어야 함


= 트랜잭션 병행제어 =
;트랜잭션들을 수행하는 도중 장애로 인해 손상 된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업
== 병행제어의 목적 ==
* 데이터베이스 일관성 유지
* 일관성을 유지하면서,
** 데이터베이스 공유 최대화
** 시스템 활용도 최대화
** 사용자 응답시간 최소화


== 병행제어 기법 ==
*'''장애 유형'''
* 로킹(Locking)
**트랜잭션 장애: 트랜잭션의 실행 시 논리적인 오류로 발생할 수 있는 에러 상황
** 트랜잭션이 어떤 데이터에 접근하고자 할 때 로킹 수행
**시스템 장애: H/W 시스템 자체에서 발생할 수 있는 에러 상황
** 로킹이 되어 있는 데이터에는 다른 트랜잭션이 접근할 수 없음
**미디어 장애: 디스크 자체의 손상으로 발생할 있는 에러 상황
** 트랜잭션은 로킹이 된 데이터에 대해서만 연산 수행
** 로킹 단위: 필드, 레코드, 파일, 데이터베이스 모두 로킹 단위가 될 수 있음
** '''로킹 단위가 크면'''
*** 관리하기 용이(로킹 오버헤드 감소)하지만 병행성 수준(동시성 수준) 낮아짐
** '''로킹 단위가 작으면'''
*** 병행성(동시성 수준)이 높아지지만 관리가 까다로움(로킹 오버헤드 증가)
* '''2단계 로킹 규약(Two-Phase Locking Protocol)'''
** Lock과 Unlock이 동시에 이루어지면 일관성이 보장되지 않으므로 Lock만 가능한 단계와 Unlock만 가능한 단계를 구분
** 확장상태: 새로운 Lock은 가능하고 Unlock은 불가능하다.
** 축소상태: Unlock 은 가능하고 새로운 Lock은 불가능하다.
** 직렬가능성을 보장한다.
** [[교착상태]]가 발생할 수 있다
* '''타임스탬프(Time Stamp)'''
** 데이터에 접근하는 시간을 미리 정하여서 정해진 시간(Time Stamp)의 순서대로 데이터에 접근 하여 수행
** 직렬가능성을 보장한다.
** [[교착상태]]가 발생하지 않는다.
** 연쇄복귀(Cascading Rollback)를 초래할 있음


== 병행제어의 필요성 ==
*'''회복 기법'''
;병행제어가 이루어지지 않을 경우 문제점
**로그 기반
* 갱신분실 (Lost update)
***'''지연갱신 회복 기법'''
** 두개 이상의 Transaction 수행하는 과정에서 연산결과의 일부가 없어지는 현상
***'''즉시갱신 회복 기법'''
* 모순성 (Inconsistendy)
**체크포인트(Checkpoint) 회복 기법
** 두개 이상의 Transaction 수행해서 얻은 결과가 일관성이 없이 서로 다른 현상
**그림자 페이징(Shadow Paging) 회복 기법
* 연쇄복귀 (Cascade Rolback)
**미디어(Media) 회복 기법
** 두개 이상의 Transaction이 수행되던중 한개의 Transaction이 취소될 때 나머지 다른 Transaction도 연쇄적으로 취소되는 현상
* 비완료 의존성 (Uncommitied Dependency)
** 두개 이상의 Transaction 수행시 먼저 수행된 Transaction이 실패한후 회복되기 이전에 다음 실행되는 Transaction이 실패한 값을 참조하게 되는 현상

Latest revision as of 02:41, 29 March 2022


Transaction

정의[edit | edit source]

  • 데이터베이스 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
  • 데이터베이스 시스템에서 복구 및 병행 수행 시 처리되는 작업의 논리적 단위
  • 한꺼번에 수행되어야 할 일련의 연산

트랜잭션 상태전이도.png

트랜잭션 특성[edit | edit source]

줄여서 ACID라고 한다.
  • 원자성(Atomicity)
  • 일관성(Consistency)
  • 독립성(Isolation)
  • 영속성(Durability)

트랜잭션 병행제어[edit | edit source]

  • 병행제어의 목적
    • 시스템 활용도 최대화
    • 사용자에 대한 응답시간 최소화
    • 데이터베이스 일관성 유지
  • 트랜잭션 동시접근 시 발생 가능한 현상
    • Dirty Write
    • Dirty Read
    • Non-Repeatable Read
    • Phantom Read
  • 트랜잭션 고립화 수준(SQL92)
    • 레벨0~레벨3
  • 병행제어 실패 시 발생 가능한 현상
    • 갱신분실
    • 현황파악오류
    • 모순성
    • 연쇄복귀
  • 병행제어 기법
    • 로킹(Locking)
    • 타임스탬프(Time Stamp)
    • 낙관적 검증
  • 상세 내용은 트랜잭션 병행제어 문서 참조

회복(Recovery)[edit | edit source]

트랜잭션들을 수행하는 도중 장애로 인해 손상 된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업
  • 장애 유형
    • 트랜잭션 장애: 트랜잭션의 실행 시 논리적인 오류로 발생할 수 있는 에러 상황
    • 시스템 장애: H/W 시스템 자체에서 발생할 수 있는 에러 상황
    • 미디어 장애: 디스크 자체의 손상으로 발생할 수 있는 에러 상황
  • 회복 기법
    • 로그 기반
      • 지연갱신 회복 기법
      • 즉시갱신 회복 기법
    • 체크포인트(Checkpoint) 회복 기법
    • 그림자 페이징(Shadow Paging) 회복 기법
    • 미디어(Media) 회복 기법