2011년 3월 17일 목요일

[데이터베이스] 병행제어

1. 다중 사용자 DBMS 의 동시적 트랜잭션 실행을 조정하는 기술

2. 단일 사용자 일때는 불필요

3. 병행제어는 갱신분실 때분에 필요하다

* 갱신분실
 - 트랜젝션이 데이터베이스를 갱신 할 때 사용자가 원하지 않는 결과를 초래하는 것
 - 트랜젝션 수행중 다른 트랜젝션이 끼어들어 순차적 수행을 방해하기 때문
 - 2개이상의 트랜젝션이 같은 데이터를 공유하여 갱신할때 발생하는 문제

4. 갱신분실 해결 방법
 - 차단 방식
 1) 차단 (Lock) 방식
  - 한 트랜잭션이 데이터 베이스 갱신을 위해 수행중에 다른 트랜젝션이 접근 못하게 함
  - 차단 단위 : 데이터베이스> 테이블, 페이지, 레코드, 필드
  - 데이터 베이스 성격에 따라 차단 단위가 달라짐
  - 차단 수준이 높을 경우 활용도 낮아짐 , 수준이 낮을수록 활용도는 높아지나 그밖에 문제가 발생할 수 있음
 
  2) 차단 유형
   - 독점 차단 : 해당 차단이 해제되기 전까지 접근할 수 없다.
   - 공유 차단 : 작업중에도 검색은 가능하나 데이터 변경은 불가

  3) 2단계 차단
   - 확장단계 트랜잭션은 실행에 필요한 모든 차단을 설치, 이단계에서 어떤 차단도 해제해서는 안됨
   - 수축단계 : 트랜젝션이 차단을 해제, 새로이 차단을 해제 해서는 안됨, 새로이 차단하게 되면 교착상태 유발
   - 시작부터 확장단계로 하여 완전히 차단한 차단단계로 해서 처리가 끝난 후 수축단계로 완전 해제 하여 종료

  4) 교착 상태
  - 서로 다른 트랜잭션이 차단을 하고 있는 상태에서 교차하여 획득하려 할 때 발생
  - 둘중하나가 자신이 차단한 것을 풀지 않는한 진행 불가
  - 효율적인 사용이 불가
  - 이를 막기위해 시스템 자체에서 처음부터 예방 할 방안을 마련 하던가 하나가 취소가 되도록 우선권 부여
     또는 회피 등의 방법이 있다

-타임스탬프(timestamp)
  - 교착상태의 미발생과 자원의 효율적인 사용이 가능한 반면 오류 처리한 트랜잭션을 다시 수행해야 함
  - 다시 수행하는 트랜잭션이 기억장치 일부를 차지하여 처리속도가 느려지고 저장 단위가 커짐

댓글 없음:

댓글 쓰기