데지덤

  1. 데이터관련 직무와 자격
    1. 데이터베이스 직무

    2. 데이터베이스 자격

  2. 데이터관련 학습방법
    1. 데이터베이스 개론 학습

    2. DBMS 학습

    3. 읽어볼만한 DB책

  3. 최신동향과 유명한 Things
    1. DB최신동향

    2. 데이터로 유명한 Things

  4. 데이터베이스 개념
    1. 데이터베이스 개념

    2. DBMS

    3. 데이터베이스 개발과운영

  5. 데이터베이스 설계(1/2)
    1. 데이터표준

    2. 데이터모델링

    3. 데이터모델 디자인패턴

  6. 데이터베이스 설계(2/2)
    1. 프로세스및상관모델링

    2. 정규화

    3. 반(역)정규화

    4. DB물리설계

  7. 인덱싱과 DB프로그래밍
    1. 인덱스와 해싱

    2. 관계연산

    3. DB언어

    4. SQL

    5. 데이터베이스 미들웨어

  8. 데이터베이스 운영
    1. 트랜잭션

    2. 병렬처리

    3. 데이터베이스 복구

    4. 데이터베이스 성능

    5. 병행제어(동시성제어)

  9. 분석계 및 빅데이터기술
    1. 데이터웨어하우스

    2. 데이터마이닝

    3. 빅데이터기술

  10. 데이터거버넌스
    1. 데이터거버넌스

    2. 데이터베이스 감리/진단

  11. 데이터베이스 종류와 보안
    1. 데이터베이스 종류

    2. 데이터베이스 보안

  12. DBMS
    1. 오라클

    2. SQL Server

    3. DB2

    4. Sybase

    5. Altibase

2PL

개념
직렬성 보장을 통해 동시성을 제어하는 2단계 로킹 기법

1. 직렬성 보장을 통해 동시성을 제어하는 2단계 로킹 기법

  가. 2PL(2Phase Locking) 규약

모든 트랜잭션들이 lock과 unlock연산을 확장단계와 수축단계로 구분하여 수행함

 

확장단계

트랜잭션은 lock 만 수행할 수 있고 unlock은 수행할 수 없는 단계

수축단계

트랜잭션은 unlock 만 수행할 수 있고 lock은 수행할 수 없는 단계

 

나 . 2단계 로킹 규약 이론(Two-Phase locking protocol theorem)

  1. 모든 로킹 연산(read_lock, write_lock) 들이 최초의 unlock 연산 보다 앞에 나오는 경우, 그 트랜잭션은 2단계 로킹 프로토콜을 준수
  2. 만일 모든 트랜잭션들이 2단계 로킹 규약을 준수한다면, 모든 트랜잭션들은 직렬성을 보장받게 됨
  3. 그 역은 성립하지 않음.
  4. 직렬가능성을 보장할 수 있는 규약으로 가장 많이 사용됨

     

2. 2단계 로킹의 개념도 및 2단계 로킹의 이해

  가. 2단계 로킹의 개념도

 

  나. basic 2단계 로킹의 이해

T1

T2

lock-X(A)

Read(A)

A := A + 100

write(A)

Unlock(A)

 

 

Lock-X(A)

read(A)

A := A * 2

write(A)

unlock(A)

lock=X(B)

read(B)

B := B * 2

write(B)

unlock(B)

Lock-X(B)

Read(B)

B := B + 100

Write(B)

Unlock(B)

 

Assume A=100, B=200

serial schedule(T1) :

A = 200, B = 300

This schedule :

A = 400, B = 500

 

 

 

  -T2는 2PL이 준수되었지만, T1은 2PL이 준수되지 않음, 따라서 직렬성이 보장되지 않음 -> T1 에 대한 값이 예상값과 다르게 출력됨

T1

T2

lock-X(A)

Read(A)

A := A + 100

write(A)

lock(B)

Unlock(A)

 

 

      

 

 

 

 

Lock-X(A)

read(A)

A := A * 2

write(A)

read(B)

B := B + 100

Write(B)

Unlock(B)

 

Assume A=100, B=200

serial schedule(T1) :

A = 200, B = 300

This schedule :

A = 200, B = 300

Lock(B)

Unlock(A)

Read(B)

B := B * 2

Write(B)

Unlock(B)

  1. T1,T2 은 2PL 준수, 직렬성 보장됨
  2. T1 의 값이 예상값과 같은 값으로 출력됨

    (* UNLOCK 의 시점을 commit/abort 시점으로 보면 이해하기 쉬울 것으로 보임

    T2의 UNLOCK 시점이 T1 의 값에 영향을 주지 못하게 됨.)

     

     

3. 2단계 로킹 기법의 문제점 및 피하기 위한 2단계 로킹 기법

  가. 2단계 로킹 기법의 문제점

  1. 2단계 로킹 기법이 deadlocks의 완전한 제거를 나타내지는 못함
  2. 2단계 로킹 기법 상태에서 Cascading rollback이 가능함
  3. 교착상태 예방과 교착상태 탐지로 해결
  4. 기본적인 2단계 로킹 기법의 문제점을 피하기 위한 로킹 기법

종류

Strict 2PLP

(Strict 2 Phase Locking Protocol)

Rigorous 2PLP

(Rigorous 2 Phase Locking Protocol)

Static (Conservative) 2PL

내용

- 2단계 로킹

- 모든 독점 lock(Lock-X)는 그 Transaction이 완료될 때까지 unlock 하지 않음. 그대로 유지

- Commits/Aborts가 수행될 때까지 모든 exclusive locks을 잡고 있어야 함

- 2단계 로킹

- 모든 lock는 그 Transaction이 완료될 때까지 unlock 하지 않음.

- 트랜잭션은 Commits/Aborts가 수행될 때까지 모든 locks을 잡고 있어야 함

- Transaction 수행 전부터 그 Transaction의 읽기 집합과 쓰기집합을 미리 선언하여 그 Transaction이 접근하려는 모든 항목들에 Lock을 획득

특징

- 연쇄복귀(Cascading rollback) 문제 발생하지 않음

Strict 2PLP보다 더 제한적임

Dead lock 발생 하지 않음.

현실성 없음

 

- 대부분의 상용 데이타베이스 시스템 : 엄밀 2PLP나 엄격 2PLP 사용

  2단계 로킹 규약 직렬가능성을 보장하지만 반면에 교착상태(deadlock)는 해결하지 못함

댓글