트랜잭션 편집하기

IT위키

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.

편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.

최신판 당신의 편집
1번째 줄: 1번째 줄:
[[분류:정보처리기사]]
[[분류:정보처리기사]][[분류:데이터베이스]]
[[분류:데이터베이스]]
 
;Transaction
;Transaction


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


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


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


=[[트랜잭션 특성]]=
= 복구(Recovery) =
 
;트랜잭션들을 수행하는 도중 장애로 인해 손상 된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업
;줄여서 ACID라고 한다.


*원자성(Atomicity)
== 장애의 유형 ==
*일관성(Consistency)
* 트랜잭션 장애: 트랜잭션의 실행 시 논리적인 오류로 발생할 수 있는 에러 상황
*독립성(Isolation)
* 시스템 장애: H/W 시스템 자체에서 발생할 수 있는 에러 상황
*영속성(Durability)
* 미디어 장애: 디스크 자체의 손상으로 발생할 수 있는 에러 상황


=[[트랜잭션 병행제어]]=
== 로그 파일 ==
 
* 트랜잭션이 반영한 모든 데이터의 변경사항을 데이터베이스에 기록하기 전에 미리 기록해두는 별도의 데이터베이스
*'''병행제어의 목적'''
* 안전한 하드디스크에 저장되며 전원과 관계없이 기록이 존재
**시스템 활용도 최대화
* 로그의 구조: <트랜잭션 번호, 로그의 타입, 데이터 항목 이름, 수정 전 값, 수정 후 값>
**사용자에 대한 응답시간 최소화
* 로그의 타입: START, INSERT, UPDATE, DELETE, ABORT, COMMIT 등 트랜잭션의 연산 타입
**데이터베이스 일관성 유지
* '''로그파일을 이용한 복구'''
*'''트랜잭션 동시접근 시 발생 가능한 현상'''
** 로그파일에 트랜잭션의 시작(START)와 종료(COMMIT)이 있는 경우 REDO 수행
**Dirty Write
** 로그파일에 트랜잭션의 시작(START)는 있고 종료(COMMIT)은 없는 경우 UNDO 수행
**Dirty Read
**Non-Repeatable Read
**Phantom Read
*'''트랜잭션 고립화 수준(SQL92)'''
**레벨0~레벨3
*'''병행제어 실패 시 발생 가능한 현상'''
**갱신분실
**현황파악오류
**모순성
**연쇄복귀
*'''병행제어 기법 '''
**로킹(Locking)
**타임스탬프(Time Stamp)
**낙관적 검증
*상세 내용은 [[트랜잭션 병행제어]] 문서 참조
 
=[[데이터베이스 회복|회복(Recovery)]]=
 
;트랜잭션들을 수행하는 도중 장애로 인해 손상 된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업


*'''장애 유형'''
== 회복 기법 ==
**트랜잭션 장애: 트랜잭션의 실행 시 논리적인 오류로 발생할 수 있는 에러 상황
* '''지연갱신 회복 기법'''
**시스템 장애: H/W 시스템 자체에서 발생할 수 있는 에러 상황
** 트랜잭션의 부분 완료 상태에선 변경 내용을 로그 파일에만 저장
**미디어 장애: 디스크 자체의 손상으로 발생할 수 있는 에러 상황
** 커밋이 발생하기 전까진 데이터베이스에 기록하지 않음
** 중간에 장애가 생기더라도 데이터베이스에 기록되지 않았으므로 UNDO가 필요 없음
* '''즉시갱신 회복 기법'''
** 트랜잭션 수행 도중에도 변경 내용을 즉시 데이터베이스에 기록
** 커밋 발생 이전의 갱신은 원자성이 보장되지 않는 미완료 갱신이므로 장애 발생 시 UNDO 필요


*'''회복 기법'''
== 그 외 회복 기법 ==
**로그 기반
* 체크포인트(Checkpoint) 회복 기법
***'''지연갱신 회복 기법'''
* 그림자 페이징(Shadow Paging) 회복 기법
***'''즉시갱신 회복 기법'''
* 미디어(Media) 회복 기법
**체크포인트(Checkpoint) 회복 기법
**그림자 페이징(Shadow Paging) 회복 기법
**미디어(Media) 회복 기법
IT위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는 IT위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다. 저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소 편집 도움말 (새 창에서 열림)