Gidhub BE Developer

병행 제어(Concurrency Control)

2018-09-06
goodGid

병행 제어란 무엇인가?

  • 병행 제어(Concurrency Control)란 다중 프로그램의 이점을 활용하여
    동시에 여러 개의 트랜잭션을 병행수행할 때,
    동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록
    트랜잭션 간의 상호작용을 제어하는 것이다.

다중 프로그램의 이점

  • 프로세서의 이용률이 증가한다.

  • 전체 트랜잭션의 작업 처리율이 향상된다.


병행 제어의 목적

  • 데이터베이스의 공유를 최대화한다.

  • 시스템의 활용도를 최대화한다.

  • 데이터베이스의 일관성을 유지한다.

  • 사용자에 대한 응답시간을 최소화한다.


병행수행과 직렬성

  • 다중 프로그램 환경에서 여러 개의 트랜잭션을 병행수행한다는 것은
    같은 시간에 여러 개의 명령을 동시에 실행한다는 것이 아니라,
    시분할이나 입ㆍ출력 인터럽트 기법 등을 이용하여
    일정한 시간 내에 각 트랜잭션에 있는 명령들이 시간적으로 번갈아 실행되는 것이다.

  • 병행 수행된 각각의 트랜잭션 결과는 각 트랜잭션을 독자적으로 수행시켰을 때의 결과와 같아야 하는데,
    이를 직렬성(Serializability) 또는 직렬화 가능성이라 한다.


병행 제어 기법의 종류

  • 로킹 기법
    • 하나의 트랜잭션이 데이터를 액세스하는 동안 다른 트랜잭션은 그 데이터를 액세스할 수 없게 하는 방법


  • 타임 스탬프(time stampe) 기법
    • 트랜잭션 간의 순서를 미리 정하여 제어하는 방법
    • 직렬화 기법이다.
    • 직렬성 순서를 결정하기 위해 트랜잭션 간의 처리 순서를 미리 선택하는 기법들 중에서 가장 보편적인 방법이다.
    • 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기전에 시간표(Time Stamp)를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법이다.
    • 교착상태가 발생하지 않는다.


  • 낙관적 기법
    • 읽기 전용(Read Only) 트랜잭션이 대부분일 때 병행 제어를 하지 않아도 문제가 없는 점을 이용
    • 검증과 확인하는 과정이 필요하여 검증 기법, 확인 기법이라고도 부른다.
    • 병행 수행 하고자 하는 대부분의 트랜잭션이 판독 전용 트랜잭션일 경우,
      트랜잭션 간의 충돌률이 매우 낮아서 병행 제어 기법을 사용하지 않고 실행되어도
      이 중의 많은 트랜잭션은 시스템의 상태를 일관성 있게 유지한다는 점을 이용한 기법이다.


  • 다중 버전 기법
    • 타임 스탬프의 개념을 이용하는 기법으로, 다중 버전 타임 스탬프 기법이라고도 한다.
    • 타임 스탬프 기법은 트랜잭션 및 데이터들이 이용될 때의 시간을 시간표로 관리하지만,
      다중 버전 기법은 갱신될 때마다의 버전을 부여하여 관리한다.

병행 제어의 문제점

  • 병행 제어(Concurrency Control)기법에 의한 제어 없이 트랜잭션들이 데이터베이스에 동시에 접근하도록 허용할 경우
    다음과 같은 문제점이 발생한다.
문제점 의미
갱신 분실
(Lost Update)
- 연산결과의 일부가 없어지는 현상
- 두 개 이상의 트랜잭션이 같은 자료를 공유하여 갱신할 때
갱신 결과의 일부가 없어지는 현상
비완료 의존성, 임시 갱신
(Uncommitted Dependency)
- 하나의 Transaction 수행이 실패 후 회복되기 전에
다른 Transaction이 실패한 갱신결과를 참조하는 현상
모순성(Inconsistency)
불일치 분석(Inconsistent Analysis)
- 얻어진 결과가 일관성 없이 서로 다른 현상
연쇄 복귀
(Cascading Rollback)
- 하나의 Transaction이 취소 됨으로 인해
연쇄적으로 다른 Transaction도 취소되는 현상

Reference


Index