개발바닥

[ 기술면접 / 데이터베이스 ] 동시성 제어( Concurrency Control ) 본문

개인 공부/기술 면접

[ 기술면접 / 데이터베이스 ] 동시성 제어( Concurrency Control )

라이언 2020. 3. 18. 13:03
반응형

동시성 제어( Concurrency Control ) 란?

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

 

동시성 제어의 정의

 

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

트랜잭션 직렬화 수행

동시성 제어의 목적

  • 트랜잭션의 직렬성 보장
  • 공유도 최대, 응답 시간 최소, 시스템 활동의 최대 보장
  • 데이터의 무결성 및 일관성 보장

동시성 제어 기법의 종류

제어 기법 설명
락킹(locking)

- 트랜잭션이 데이터에 잠금(lock)을 설정하면 다른 트랜잭션은 해당 데이터에 대해 잠금이 해제(unlock)될 때까지 접근/수정/삭제가 불가하다.

- 트랜잭션이 사용하는 자원에 대하여 상호 배제(Mutual Exclusive) 기능을 제공하는 기법

타임스탬프(timestamp) - 시스템에서 생성하는 고유 번호인 타임스탬프를 트랜잭션에 부여함으로써 트랜잭션간의 접근 순서를 미리 정한다.
적합성(validation) 검증 - 먼저 트랜잭션을 수행하고 트랜잭션을 종료할 때 적합성을 검증하여 데이터베이스에 최종 반영한다.

※ 상호배제는 특정 트랜잭션이 데이터 항목에 대하여 잠금 (Lock)을 설정할 트랜잭션이 해제(unlock) 할 때 까지 데이터를 독점적으로 사용할 수 있는 것

동시성 제어를 하지 않은 경우 발생하는 문제점

구분 설명
갱신 손실 (Lost Update)

- 하나의 트랜잭션이 갱신한 내용을 다른 트랜잭션이 덮어씀으로써 갱신이 무효화가 되는 것을 의미

- 두 개이상 트랜잭션이 한 개의 데이터를 동시에 갱신(Update)할 때 발생

현황파악오류 (Dirty Read)

- 읽기 작업을 하는 트랜잭션 1이 쓰기 작업을 하는 트랜잭션2가 작업한 중간 데이터를 읽기 때문에 발생하는 문제

- 작업중인 트랜잭션 2가 작업을 Rollback한 경우 트랜잭션 1은 무효가 된 데이터를 읽게 되고 잘못된 결과를 도출한다.

모순성 (Inconsistency)

- 다른 트랜잭션들이 해당 항목 값을 갱신하는 동안 한 트랜잭션이 두 개의 항목 값 중 어떤 것은 갱신되기 전의 값을 읽고 다른 것은 갱신된 후의 값을 읽게 되어 데이터의 불일치가 발생하는 상황

연쇄복귀 (Cascading Rollback)

- 두 트랜잭션이 동일한 데이터 내용을 접근할 때 발생

- 한 트랜잭션이 데이터를 갱신한 다음 실패하여 Rollback 연산을 수행하는 과정에서 갱신과 Rollback 연산을 실행하고 있는 사이에 해당 데이터를 읽어서 사용할 때 발생할 수 있는 문제

 

반응형
Comments