트랜잭션 편집하기
IT위키
편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
[[분류:정보처리기사]] | [[분류:정보처리기사]][[분류:데이터베이스]] | ||
[[분류:데이터베이스]] | |||
;Transaction | ;Transaction | ||
=정의= | = 정의 = | ||
* 데이터베이스 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 | |||
* 데이터베이스 시스템에서 복구 및 병행 수행 시 처리되는 작업의 논리적 단위 | |||
* 한꺼번에 수행되어야 할 일련의 연산 | |||
* | = 특성 = | ||
* | ;줄여서 [[ACID]]라고 한다. | ||
* | * '''원자성(Atomicity)''' | ||
** 트랜잭션 연산은 데이터베이스에 모두 반영되거나 전혀 반영되지 않아야 함 | |||
** 트랜잭션의 연산 중 어느 하나가 수행되지 않으면 트랜잭션 전부가 취소되어야 함 | |||
* '''일관성(Consistency)''' | |||
** 동일한 트랜잭션은 일관성있는 결과를 도출 | |||
** 시스템의 고정적인 요소는 트랜잭션 전후가 동일 | |||
* '''독립성(Isolation)''' | |||
** 실행중인 트랜잭션에 다른 트랜잭션이 개입할수 없음 | |||
** 실행중인 트랜잭션을 다른 트랜잭션에서 참조할 수 없음 | |||
* '''영속성(Durability)''' | |||
** 완료된 트랜잭션은 영속적이어야 함 | |||
[[ | = [[트랜잭션 병행제어]] = | ||
* 병행제어의 목적 | |||
** 데이터베이스 일관성 유지 | |||
* '''트랜잭션 동시접근 시 발생 가능한 현상''' | |||
** Dirty Write | |||
** Dirty Read | |||
** Non-Repeatable Read | |||
** Phantom Read | |||
* '''트랜잭션 고립화 수준(SQL92)''' | |||
** 레벨0~레벨3 | |||
* '''병행제어 실패 시 발생 가능한 현상''' | |||
** 갱신분실 | |||
** 현황파악오류 | |||
** 모순성 | |||
** 연쇄복귀 | |||
* '''병행제어 기법 ''' | |||
** 로킹(Locking) | |||
** 타임스탬프(Time Stamp) | |||
** 낙관적 검증 | |||
* 상세 내용은 [[트랜잭션 병행제어]] 문서 참조 | |||
= | = 복구(Recovery) = | ||
;트랜잭션들을 수행하는 도중 장애로 인해 손상 된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업 | |||
; | |||
== 장애의 유형 == | |||
* | * 트랜잭션 장애: 트랜잭션의 실행 시 논리적인 오류로 발생할 수 있는 에러 상황 | ||
* | * 시스템 장애: H/W 시스템 자체에서 발생할 수 있는 에러 상황 | ||
* | * 미디어 장애: 디스크 자체의 손상으로 발생할 수 있는 에러 상황 | ||
= | == 로그 파일 == | ||
* 트랜잭션이 반영한 모든 데이터의 변경사항을 데이터베이스에 기록하기 전에 미리 기록해두는 별도의 데이터베이스 | |||
* | * 안전한 하드디스크에 저장되며 전원과 관계없이 기록이 존재 | ||
* | * 로그의 구조: <트랜잭션 번호, 로그의 타입, 데이터 항목 이름, 수정 전 값, 수정 후 값> | ||
* | * 로그의 타입: START, INSERT, UPDATE, DELETE, ABORT, COMMIT 등 트랜잭션의 연산 타입 | ||
* | * '''로그파일을 이용한 복구''' | ||
*''' | ** 로그파일에 트랜잭션의 시작(START)와 종료(COMMIT)이 있는 경우 REDO 수행 | ||
** | ** 로그파일에 트랜잭션의 시작(START)는 있고 종료(COMMIT)은 없는 경우 UNDO 수행 | ||
** | |||
*''' | == 회복 기법 == | ||
** | * '''지연갱신 회복 기법''' | ||
** | ** 트랜잭션의 부분 완료 상태에선 변경 내용을 로그 파일에만 저장 | ||
** | ** 커밋이 발생하기 전까진 데이터베이스에 기록하지 않음 | ||
** 중간에 장애가 생기더라도 데이터베이스에 기록되지 않았으므로 UNDO가 필요 없음 | |||
* '''즉시갱신 회복 기법''' | |||
** 트랜잭션 수행 도중에도 변경 내용을 즉시 데이터베이스에 기록 | |||
** 커밋 발생 이전의 갱신은 원자성이 보장되지 않는 미완료 갱신이므로 장애 발생 시 UNDO 필요 | |||
== 그 외 회복 기법 == | |||
* 체크포인트(Checkpoint) 회복 기법 | |||
* 그림자 페이징(Shadow Paging) 회복 기법 | |||
* 미디어(Media) 회복 기법 | |||