SMALL

병행수행 문제점

- 갱신 분실(lost update)

- 모순성(inconsistency)

위와 같이 트랜잭션이 실행되면 사용자가 원하는 값이 나오지 않을뿐더러, 일관성 없는 모순된 상태가 된다.

 

- 연쇄복귀(cascading rollback)

T1이 롤백되면 T2도 같이 롤백되는 연쇄복귀가 일어난다.

 

병행제어 목적

- 데이터베이스 공유 최대화

- 응답 시간 단축

- 시스템 활용도 증대

 

병행제어 기법

1. 로킹기법

- 두 개의 연산 lock와 unlock 연산으로 트랜잭션의 데이터를 상호배제하여 제어하는 기법

- 로킹 규약

  • 트랜잭션 T가 read나 write 연산을 하려면 반드시 먼저 lock 실행되어야함
  • 트랜잭션 T가 실행한 lock은 T가 종료전에 반드시 unlock 실행되어야함
  • 트랜잭션 T는 다른 트랜잭션에 의해 이미 lock가 걸려있으면 다시 lock 실행할수 없음
  • 트랜잭션 T는 lock이 실행되지 않았다면, unlock 실행할수 없음

- 로킹종류

  • 공용 로크(shared lock) : 트랜잭션 T가 데이터 x에 공용 로크를 걸면, read는 가능하나 write는 불가능(다른 트랜잭션도 read만 가능)
  • 전용 로크(exclusive lock) : 트랜잭션 T가 데이터 x에 전용 로크를 걸면 read, write 모두 가능하나 다른 트랜잭션은 read, write가 불가능

2. 2단계 로킹기법(2PLP: two-phase locking protocol)

- 기본적인 로킹기법은 직렬 가능성이 보장되지 않지만, 2단계 로킹기법은 직렬성을 보장

- 2PLP 규악

  • 확장 단계(growing phase) : 트랜잭션은 새로운 lock 연산만 실행할 수 있고, unlock 연산은 수행할 수 없는 단계
  • 축소 단계(shrinking phase) : 트랜잭션은 unlock 연산만 실행할 수 있고, 일단 unlock 연산은 실행하면 lock 연산은 더 이상 실행할 수 없는 단계

- 트랜잭션 하나에 unlock이 나오기전에 모든 값에 대한 lock이 나오면 2plp로 직렬 가능한 스케줄이라고 보면된다.

- 엄밀 2단계 로킹기법(strict 2PLP) : 모든 독점 lock은 트랜잭션 완료할 때까지 unlock하지 않는 것이며, 연쇄 복귀 문제가 일어 나지 않음

- 엄격 2단계 로킹기법(rigorous 2PLP) : 로킹이 2단계일 뿐 아니라 모든 로크는 트랜잭션 완료할 때까지 unlock하지 않는 것

- 2PLP는 직렬 가능성을 보장하지만 반면 데드락 문제를 내포하고 있음

 

3. 타임스탬프 순서 기법

- 트랜잭션을 비직렬로 실행한 것이 타임스탬프 순서대로 트랜잭션을 실행한 직렬 스케줄의 결과와 항상 같게 되는 것을 보장하는 것

- 타임스탬프 순서를 위반하게되면 연쇄 복귀를 하게 되는 문제점이 있음

- 타임스탬프 순서대로 실행 되기 때문에 충돌 직렬 가능성을 보장

- 교착상태는 발생하지 않음

 

4. 다중 버전 병행제어

- 접근하려는 트랜잭션의 타임스탬프와 여러버전의 타임스탬프를 비교하여 직렬 가능성이 보장되는 적절한 버전을 선택하여 접근하는 기법

 

5. 낙관적 병행제어

- 아무 검사를 실시하지 않고 트랜잭션이 완료된후 일괄 검사를 하는 기법

- 판독, 확인, 기록 단계를 거쳐서 수행

LIST

'전공 > 데이터베이스' 카테고리의 다른 글

무결성 종류  (0) 2021.05.09
참조 무결성 제약조건 만족시키기 위한 DBMS 옵션  (0) 2021.05.09
데이터베이스 회복기법  (0) 2021.05.03
VIEW 장단점  (0) 2021.05.03
VIEW 변경이 불가능한 경우  (0) 2021.05.03

+ Recent posts