정보관리기술/데이터베이스

데이터베이스 병행 제어 기법

아이티신비 2024. 2. 7. 10:00

문제2) 데이터베이스 병행 제어 기법 및 필요성

답)

 

1. DB일관성을 위한 동시성 제어의 정의 및 필요성

정의
  • 다수의 트랜잭션이 동일한 데이터에 동시에 접근하려고 할 때, 각 트랜잭션이 독립적으로 수행된 결과를 보장하는 기법
필요성
  • 트랜잭션 처리 결과의 직렬성 보장, 동시 실행 트랜잭션 수를 최대화, 데이터 무결성 보장
  • 병행 작업에 의해 발생할 수 있는 데이터 베이스의 비 일관성 방지
갱신손실
  • 한 트랜잭션의 갱신을 다른 트랜잭션이 덮어써 갱신 무효화
현황파악오류
  • 읽기 작업 트랜잭션이 쓰기 작업 트랜잭션의 중간 데이터를 읽어 일관성 손실
모순성
  • 한 트랜잭션이 여러 데이터를 갱신하는 동안 다른 트랜잭션이 어떤 것은 갱신 전 값을 읽고 어떤 것은 갱신 후 값을 읽어 불일치 발생
연쇄복귀
  • 한 트랜잭션이 Rollback 연산을 수행하는 도중 다른 트랜잭션 Rollback 될 데이터를 읽어 발생하는 오류

 

2. 데이터베이스 동시성 제어 기법

 
기법
설명항목
상세설명
Timestamp
정의
  • 트랜잭션 순서를 미리 선정하는 시스템 전체에서 유일한 값(timestamp)을 기준으로 직렬 순서를 결정하는 기법
구현방법
시스템 시계
  • 트랜잭션이 요청될 때 시스템 시간을 Timestamp로 활용
논리적 계수기
  • 트랜잭션이 요청될 때마다 증가하는 시스템 내 계수기 활용
수행방식
쓰기 트랜잭션 T
읽기 트랜잭션 T
특징
  • Locking이 없어 Deadlock 미 발생
  • Locking과 Dead Lock 탐지에 소요되는 전송 오버헤드 감소
  • 연쇄 복귀 (Cascading Rollback)는 보장하지 못함
Locking
정의
  • 트랜잭션이 작업 수행을 위해 접근한 데이터에 다른 트랜잭션이 접 할 수 없도록 차단하는 독점적 제어 권한을 활용하는 기법
연산유형
공유 락
(Shared Lock)
  • Write 없는 트랜잭션이 공유 락을 설정하고 다른 트랜잭션의 데이터 조회 허용. Write 포함된 트랜잭션은 락 해제 대기
독점 락
(Exclusive Lock)
  • 독점 락을 설정한 트랜잭션에 read, write 권한 독점 부여 다른 트랜잭션 접근 불가하며 shared lock 도 설정 불가
수행방식
(2PL)
  • Locking은 트랜잭션 내에서 lock 과 unlock이 섞여서 발생하면 직렬성 보장 불가
  • Locking기법의 한계 보완을 위해 2-Phase Locking(2PL) 기법이 등장하였으며, lock수행 단계와 unlock 수행 단계 두 단계로 락킹 수행
특징
  • Locking 단위 작을수록 오버헤드 증가, 공유성 높음
  • Locking 단위 클수록 오버헤드 감소, 공유성 낮음
정의
  • 같은 데이터를 동시에 수정하지 않을 것이라고 가정하고 트랜잭션 종료 시 다른 트랜잭션에 의하여 값이 변경되었는지 검증하는 기법
구현요소
판독단계(Read)
  • 데이터 사본을 생성하여 읽기와 갱신 수행
확인단계(Validation)
  • 충돌 직렬 가능성 검사
기록단계(Write)
  • 간섭 있는 트랜잭션은 재실행, 간섭 없는 트랜잭션은 결과 쓰기 작업 수행
수행방식
  • 트랜잭션의 실행을 3단계로 나누고, 단계별 Timestamp 설정
  • 확인 검사 조건 3가지 중 하나 이상 만족하는 경우 트랜잭션 간 간섭이 없는 것으로 간주하고 쓰기 작업 수행

특징
  • Deadlock 없음, 연쇄 복귀 없음, 순환적 재 시작 발생
다중버전
병행제어
구현방법
정의
  • 여러 버전의 데이터 값을 저장하며 트랜잭션 시작 시점 이후 변경된 값을 발견하면 저장된 일관성 있는 버전(CR Copy)를 활용하는 기법
접근법
Multi Generation
Architecture
  • 데이터베이스에 다중 버전의 레코드를 저장, 불필요할 때 저장해둔 레코드 버림, PostgreSQL, FireBird, SQL Server 해당
Undo Segment
Architecture
  • 최신 버전의 데이터만 데이터베이스 내에 저장, Undo 를 이용해 이전 버전의 데이터를 재구성, Oracle, MySQL/InnoDB 해당
수행방식
  • Multi Generation Architecture : Tuple을 update 할 때 New Tuple을 새롭게 추가하고 Old Tuple은 유효 범위를 마킹하여 처리





  • Undo Segment Architecture : SCN이 더 최신인 블록은 Undo segment 에서 조회

특징
  • Lock을 대기하지 않으므로 동시성 구현 뛰어남, 과거 버전 데이터 저장 및 I/O에 따른 오버헤드 증가

 

공감과 댓글은 아이티신비에게 큰 힘이 됩니다.

블로그 글이 유용하다면 블로그를 구독해주세요.♥

 

 

'정보관리기술 > 데이터베이스' 카테고리의 다른 글

정규화, 역정규화 / ①  (0) 2024.02.08
병행제어(Concurrency Control)  (1) 2024.02.07
정규화  (0) 2024.02.07
트랜잭션 / ①  (0) 2024.02.07
데이터 무결성 vs 정합성  (1) 2024.02.07