728x90
반응형

직렬성(Serialization)

 

갱현모연(LDIC)

 

[직렬성] 여러 트랜잭션이 동시에 병행 수행되더라도 각 트랜잭션이 하나씩 차례대로 수행되는 것과 같은 데이터베이스의 일관성을 보장하는 수행특성

[직렬가능성] 병형스케줄 S가 직렬스케줄 S'와 동등시 S는 직렬가능성

[스케쥴] 충돌가능성, View 직렬 가능성 => 직렬화

[직렬성 보장 프로토콜] 2PC, Timestamp Ordering, Validation(낙관)

 

[직렬성 결여시 문제점] [갱현모연, LDIC]

- 갱신손실 (Lost Update)

- 현황파악오류 (Dirty Read)

- 모순성 (Inconsistency)

- 연쇄복귀 (Cascading Rollback)

- 회복불능

 


2PL (2 Phase Locking)

 

read_lock(), write_lock(), unlock()

확장단계,수축단계

교착상태 미발생

 

[개념] 다중 트랜잭션 환경에서 직렬성을 보장하기 위해 모든 트랜잭션들이 lock연산과 unlock연산을 확장단계와 수축단계로 구분하여 수행하는 동시성 제어 기법.

[절차] 확장단계 -> 차단단계(연산) -> 수축단계 / lock ->unlock

1)확장단계: 새로운 Lock 획득가능, 해제 불가

2)수축단계:보유 Lock해제, 새로운 Lock 획득불가

 

[변형]

1)스트릭트(전용락 완료 기다림),

2)리고로스(모든락기다림)

3)스태틱(읽기집합, 쓰기집합 미리선언, 모든락 획득)

 


TimeStamp Ordering

 

생성(system clock, 논리적 계수기)

직렬성 보장, 순차처리

데드락방지, 연쇄복구 초래 가능

 

[개념] 트랜잭션 순서대로 timestamp 지정하여 동시성 제어의 기준으로 사용

[구성] 1)read_TS(X): X를 성공적으로 읽은 트랜잭션 타임스탬프 중 가장 큰 값

2)write_TS(X): X를 성공적으로 기록한 트랜잭션 타임스탬프 중 가장 큰 값

[절차]

가.트랜잭션 T가 write_item(X) 연산을 수행시

1) TS(T) < read_TS(X) or TS(T) < write_TS(X)이면 T를 철회/복귀 연산 거부(reject)

2) 조건이 미발생시 T는 write_item(X) 연산 수행 write_TS(X)를 TS(T)로 설정

나. 트랜잭션 T 가 read_item(X) 연산을 수행시

1)TS(T) <=  write_TS(X)면 T를 철회하고 복귀시키고 그 연산을 거부

2)TS(T) >=  write_TS(X)면 READ수행

 

시스템시계(system clock), 논리적계수기(counter),

데드락방지기법(웨잇다이,운드웨이트)

[알고리즘]

1)Wait-Die 알고리즘

TS(Ti) < TS(Tj)이면(Ti가 Tj보다 먼저 시작되었다면)

Ti는 대기(Wait)

그렇지 않으면(Ti가 Tj보다 나중에 시작되었다면)

Ti가 철회(Die). 나중에 Ti 재시작

2)Wound-Wait 알고리즘

TS(Ti) < TS(Tj)이면(Ti가 Tj보다 먼저 시작되었다면)

Tj를 철회(Wound).

그렇지 않으면 Ti는 대기(Wait)

728x90

'04.Database' 카테고리의 다른 글

DB 유형 - 그래프 DB  (0) 2020.06.04
데이터 모델링 - 스키마 - 외부, 개념, 내부 (아키텍처)  (0) 2020.06.04
동시성 제어(Concurrency)  (0) 2020.06.04
동시성 제어 - 낙관적 검증기법  (0) 2020.06.04
분산 DB  (0) 2020.06.04
Posted by Mr. Slumber
,