레이블이 transaction인 게시물을 표시합니다. 모든 게시물 표시
레이블이 transaction인 게시물을 표시합니다. 모든 게시물 표시

2013년 7월 5일 금요일

transaction

1. Transaction의 역할은 데이터베이스를 하나의 일관된 상태로부터 다음의 일관된 상태로 전환하는 것이다.

2. 데이터베이스의 Transaction은 ACID 특징으로 기술되는 속성을 가진다.
  o 원자성(Atomicity) : Transaction은 완전하게 발생하거나 전혀 발생하지 않는다.
  o 일관성(Consistency) : Transaction은 데이터베이스를 하나의 일관된 상태로부터 다음의 일관된 상태로 전환한다.
  o 고립성(Isolation) : 한 Transaction의 영향은 그 Transaction이 커밋을 완료하기 전까지 다른 Transaction에게 보이지 않는다.
  o 영속성(Durability) : Transaction은 한 번 Commit되면, 그 결과는 영구적으로 유지된다.

3. ORACLE에는 “begin transaction” 명령문이 없으며, 데이터를 수정하는 최초 명령문(TX잠금을 갖는 최초 명령문)과함께 암시적으로 시작된다.
   o TX Lock : Transaction Lock으로 Transaction이 처음으로 변경을 시작할 때 획득되며, Transaction이 commit 또는 rollback을 수행할 때까지 유지되는 Lock
   o Transaction은 Commit 또는 Rollback 명령에 의해 명시적으로 끝난다.
   o Commit 또는 Rollback의 명령에 의해 Transaction이 종료되지 않으면, 사용중인 도구 또는 환경에 따라 Commit 또는 Rollback에 자동 수행된다.
   o SQL*PLUS 에서는 사용자 대신 Commit을 수행하고
   o Pro*C에서는 사용자 대신 Rollback를 수행한다. 

4 ORACLE의 모든 Transaction은 원자성을 가지며, Transaction을 구성하는 모든 명령문은 Commit되거나 Rollback된다. 

5 특정 명령문의 실패는 실패 이전 명령문이 자동으로 Rollback되도록 하지 않는다. 즉, 기존에 이미 수행된 명령문의 작업결과는 보존된다. 

6. Transaction 제어 명령문
   o Commit : Commit과 Commit Work는 동일하며, Transaction을 종료하고, Transaction에서 변경된 내용을 영구적으로 보존한다.
   o Rollback : Rollback과 Rollback Work는 동일하며, Transaction을 종료하고, Transaction에서 변경된 내용을 변경전의 상태로 되돌린다. 즉, Rollback Segment에 저장되어 있는 정보를 읽어서 데이터베이스 블록들을 Transaction이 시작하기 이전상태로 복구 함으로써 Rollback을 수행한다.
   o Savepoint : Transaction내에서 특정 지점을 표시하며, 하나의 Transaction이 여러 지점으로 분할 될 수 있다.
   o Rollback To <Savepoint> : Savepoint로 표시된 지점 이전에 수행된 작업은 Rollback되지 않으며, Savepoint로 명시된 지점까지만 Rollback을 수행한다.
   o Set Transaction : 고립 수준과 읽기전용 또는 읽고 쓰기와 같은 Transaction의 다양한 속성들을 설정할 수 있도록 하며, Transaction이 특정 Rollback Segment를 사용하도록 지시하는데 사용된다.