트랜잭션 편집하기
IT위키
편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
[[분류:정보처리기사]] | [[분류:정보처리기사]][[분류:데이터베이스]] | ||
[[분류:데이터베이스]] | |||
;Transaction | ;Transaction | ||
=정의= | = 정의 = | ||
* 데이터베이스 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 | |||
*데이터베이스 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 | * 데이터베이스 시스템에서 복구 및 병행 수행 시 처리되는 작업의 논리적 단위 | ||
*데이터베이스 시스템에서 복구 및 병행 수행 시 처리되는 작업의 논리적 단위 | * 한꺼번에 수행되어야 할 일련의 연산 | ||
*한꺼번에 수행되어야 할 일련의 연산 | |||
=[[ | = 특성 = | ||
;줄여서 [[ACID]]라고 한다. | |||
* '''원자성(Atomicity)''' | |||
** 트랜잭션 연산은 데이터베이스에 모두 반영되거나 전혀 반영되지 않아야 함 | |||
** 트랜잭션의 연산 중 어느 하나가 수행되지 않으면 트랜잭션 전부가 취소되어야 함 | |||
* '''일관성(Consistency)''' | |||
** 동일한 트랜잭션은 일관성있는 결과를 도출 | |||
** 시스템의 고정적인 요소는 트랜잭션 전후가 동일 | |||
* '''독립성(Isolation)''' | |||
** 실행중인 트랜잭션에 다른 트랜잭션이 개입할수 없음 | |||
** 실행중인 트랜잭션을 다른 트랜잭션에서 참조할 수 없음 | |||
* '''영속성(Durability)''' | |||
** 완료된 트랜잭션은 영속적이어야 함 | |||
= 트랜잭션 병행제어 = | |||
== 병행제어의 목적 == | |||
* 데이터베이스 일관성 유지 | |||
* 일관성을 유지하면서, | |||
** 데이터베이스 공유 최대화 | |||
** 시스템 활용도 최대화 | |||
** 사용자 응답시간 최소화 | |||
*''' | == 병행제어 기법 == | ||
** | * 로킹(Locking) | ||
** | ** 트랜잭션이 어떤 데이터에 접근하고자 할 때 로킹 수행 | ||
** | ** 로킹이 되어 있는 데이터에는 다른 트랜잭션이 접근할 수 없음 | ||
** 트랜잭션은 로킹이 된 데이터에 대해서만 연산 수행 | |||
** 로킹 단위: 필드, 레코드, 파일, 데이터베이스 모두 로킹 단위가 될 수 있음 | |||
** '''로킹 단위가 크면''' | |||
*** 관리하기 용이(로킹 오버헤드 감소)하지만 병행성 수준(동시성 수준) 낮아짐 | |||
** '''로킹 단위가 작으면''' | |||
*** 병행성(동시성 수준)이 높아지지만 관리가 까다로움(로킹 오버헤드 증가) | |||
* '''2단계 로킹 규약(Two-Phase Locking Protocol)''' | |||
** Lock과 Unlock이 동시에 이루어지면 일관성이 보장되지 않으므로 Lock만 가능한 단계와 Unlock만 가능한 단계를 구분 | |||
** 확장상태: 새로운 Lock은 가능하고 Unlock은 불가능하다. | |||
** 축소상태: Unlock 은 가능하고 새로운 Lock은 불가능하다. | |||
** 직렬가능성을 보장한다. | |||
** [[교착상태]]가 발생할 수 있다 | |||
* '''타임스탬프(Time Stamp)''' | |||
** 데이터에 접근하는 시간을 미리 정하여서 정해진 시간(Time Stamp)의 순서대로 데이터에 접근 하여 수행 | |||
** 직렬가능성을 보장한다. | |||
** [[교착상태]]가 발생하지 않는다. | |||
** 연쇄복귀(Cascading Rollback)를 초래할 수 있음 | |||
* | == 병행제어의 필요성 == | ||
** | ;병행제어가 이루어지지 않을 경우 문제점 | ||
* | * 갱신분실 (Lost update) | ||
** | ** 두개 이상의 Transaction 수행하는 과정에서 연산결과의 일부가 없어지는 현상 | ||
* | * 모순성 (Inconsistendy) | ||
** | ** 두개 이상의 Transaction 수행해서 얻은 결과가 일관성이 없이 서로 다른 현상 | ||
** | * 연쇄복귀 (Cascade Rolback) | ||
** 두개 이상의 Transaction이 수행되던중 한개의 Transaction이 취소될 때 나머지 다른 Transaction도 연쇄적으로 취소되는 현상 | |||
* 비완료 의존성 (Uncommitied Dependency) | |||
** 두개 이상의 Transaction 수행시 먼저 수행된 Transaction이 실패한후 회복되기 이전에 다음 실행되는 Transaction이 실패한 값을 참조하게 되는 현상 |