동시성 제어( Concurrency Control )

김하영·2021년 5월 12일
9

1. 프로그래밍 세계에서 '동시성 제어' 의 개념

  • 동시성 제어( Concurrency Control ) 란?

동시에 실행되는 여러 개의 트랜잭션이 작업을 성공적으로 마칠 수 있도록 트랜잭션의 실행 순서를 제어하는 기법이다.

  • 동시성 제어의 정의
  1. 다중 사용자 환경을 지원하는 데이터 베이스 시스템에서 여러 트랜잭션들이 성공적으로 동시에 실행될 수 있도록 지원하는 기능
  2. 다중 사용자 환경을 지원하는 DB system의 경우 필수적으로 지원해야 하는 기능으로 병행제어라고도 한다.
  3. 트랜잭션의 직렬화 수행 보장

  • 동시성 제어의 목적
  1. 트랜잭션의 직렬성 보장
  2. 공유도 최대, 응답 시간 최소, 시스템 활동의 최대 보장
  3. 데이터의 무결성 및 일관성 보장
  • 동시성 제어를 하지 않은 경우 발생하는 문제점

2. 동시성 제어기법의 종류

  • 동시성 제어 기법의 종류

3. 동시성 제어기법 종류별 작동 메커니즘

1. 락킹 (locking)

잠금(Locking) 기법

2. 타임 스탬프(timestamp)

  • 타임스탬프(Timestamp) 정의

트랜잭션을 식별하기 위하여 DBMS가 부여하는 유일한 식별자인 타임 스탬프를 지정하여 트랜잭션간의 순서를 미리 선택하는 동시성 제어 기법

  • 타임스탬프(Timestamp) 특징

시스템에 들어오는 트랜잭션의 순서대로 시간 스탬프를 지정하여 동시성 제어의 기준으로 사용한다.

교착상태를 방지 할 수 있으나 RollBack 발생률이 높고 연쇄 복귀를 초래할 수 있다.

  • Timestamp 운영방식 및 생성기법

운영방식

  1. read_TS(x) : read(x) 연산을 성공적으로 수행한 트랜잭션들의 타임스탬프 중 가장 큰 것

  2. write_TS(x) : write(x) 연산을 성공적으로 수행한 트랜잭션들의 타임스탬프 중 가장 큰 것

  • 트랜잭션 Ti가 Write(x) 수행 시 TS(Ti) < write_TS(x) 이면 TS(Ti)가 write(x)를 실행한 것으로 간주하고 무시하는 것이 토마스 기록 규칙(Thomas write rule), 이는 write 연산의거부로 인한 트랜잭션의 취소를 감소시키기 위한 목적이다.

Timestamp 생성기법

  • 논리적 계수기(Logical Count) : 트랜잭션이 발생할 때마다 카운터를 하나씩 증가한다.

  • 시스템 클럭(System clock) : 트랜잭션이 시스템에 들어올때의 시스템 시각을 부여한다.

3. 낙관적 검증

  • 낙관적 검증 기법의 정의

트랜잭션 수행 동안은 어떠한 검사도 하지 않고, 트랜잭션 종료 시에 일괄적으로 검사하는 기법.

  • 낙관적 검증 기법의 특징
  1. 트랜잭션 수행 동안 그 트랜잭션을 위해 유지되는 데이터 항목들의 지역 사본에 대해서만 갱신이 이루어진다.

  2. 트랜잭션 종료 시에 동시성을 위한 트랜잭션 직렬화가 검증되면 일시에 DB로 반영한다.

  • 낙관적 검증 기법 구성도

  • 낙관적 검증 수행 단계

가. 트랜잭션의 실행을 3단계로 나눈다.

- R, V, W 로 나누어 실행

나. 트랜잭션에 3가지 타임 스탬프 사용한다.

다. 확인 검사 조건

  • TS(Ti)<TS(Tj)의 관계에 있는 모든 트랜잭션 Ti 에 대해 위 3가지 조건 중 하나만 만족하면 트랜잭션들 간에 간섭이 없는 것으로 보고 확인 검사를 성공 처리한다.

  • 하나라도 만족하지 못하면 트랜잭션 간의 간섭이 일어났을 가능성이 있기 때문에 실패 처리한다.

라. 직렬 가능 순서

이 기법의 직렬가능성 순서는 Validation(Ti) 타임스탬프의 값에 기초한 순서로 결정되므로 트랜잭션 Ti의 타임스탬프는 실제로 Validation(Ti)이라고 할 수 있다.

따라서 트랜잭션 Ti와 Tj에 대해 TS(Ti) < TS(Tj)이면 실행된 스케줄은 반드시 Ti가 Tj보다 먼저 나오는 직렬 스케줄을 처리 해야한다.

4. 다중버전 병행제어 기법 (MVCC)

  • 다중버전 병행제어 기법의 정의

트랜잭션이 한 데이터 아이템을 접근하려 할 때, 그 트랜잭션의 타임스탬프와 접근하려는 데이터 아이템의 여러 버전의 타임스탬프를 비교하여, 현재 실행하고 있는 스케줄의 직렬가능성이 보장되는 적절한 버전을 선택하여 접근하도록 하는 기법이다.

** 하나의 데이터 아이템에 대해 여러 버전의 값 유지한다.

  • 다중버전 병행 제어 기법의 특징
  1. 판독 요청을 거절하지도, 대기하지도 않음

  2. 기록보다 판독 연산이 주류를 이루는 데이터 베이스 시스템에 큰 이점

  3. 데이터 아이템을 판독할 때마다 중복되는 디스크 접근

  4. 트랜잭션간의 충돌문제는 대기가 아니라 복귀처리 함으로 연쇄 복귀초래 발생 가능성

  • 다중 버전 병행 기법 제어 방법

다중 버전 동시성 제어의 절차 개요

다중 버전 동시성 제어 개념도

다중 버전 동시성 제어 원리 / 요소

예시

1) 트랜잭션 T1은 A구좌 값을 100에서 50으로 바꿀 때 롤백 세그먼트에는 A구좌 튜플의 잔액 어트리뷰트 값을 100에서 50으로 바꾸었다고 기록한다.

2) 이후 T2 트랜잭션에서 시점 2에서의 A구좌 튜플의 버전을 필요로 할 때는, 현재의 A구좌 잔액 100과 롤백 세그먼트에 기록된 50으로 바뀐 정보를 합해 잔액 100을 갖는 A구좌 튜플의 버전을 만들고 T2에서는 그 버전을 이용하게 된다.

4. 동시성 제어 기법 비교

profile
Back-end Developer

0개의 댓글