본문 바로가기

CS/데이터베이스

병행 제어(Concurrency Control)

반응형

병행 제어(Concurrency Control) 정의

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

병행 수행의 문제점

  • 갱신 분실(Lost Update) : 2개 이상의 트랜잭션이 같은 자료를 공유하여 갱신할 때 갱신 결과의 일부가 없어지는 현상
  • 비완료 의존성(Uncommitted Dependency) : 하나의 트랜잭션 수행이 실패한 후 회복되기 전에 다른 트랜잭션이 실패한 갱신 결과를 참조하는 현상
  • 모순성(Inconsistency) : 두 개의 트랜잭션이 병행 수행될 때 원치 않는 자료를 이용함으로써 발생하는 문제
  • 연쇄 복귀(Cascading Rollback) : 병행 수행되던 트랜잭션들 중 어느 하나에 문제가 생겨 Rollback하는 경우 다른 트랜잭션도 함께 Rollback되는 현상

병행 제어의 목적

  • 데이터베이스의 공유를 최대화한다.
  • 시스템의 활용도를 최대화한다.
  • 데이터베이스의 일관성을 유지한다.
  • 사용자에 대한 응답 시간을 최소화한다.

로킹(Locking)

  • 로킹은 주요 데이터의 액세스를 상호 배타적으로 하는 것이다.
  • 트랜잭션들이 어떤 로킹 단위를 액세스하기 전에 Lock(잠금)을 요청해서 Lock이 허락되어야만 그 로킹 단위를 액세스할 수 있도록 하는 기법이다.

로킹 단위(Locking Granularity)

  • 병행 제어에서 한꺼번에 로킹할 수 있는 데이터 단위이다.
  • 데이터베이스, 파일, 레코드, 필드 등은 로킹 단위가 될 수 있다.
  • 로킹 단위가 크면 로크 수가 작아 관리하기 쉽지만 병행성 수준이 낮아지고, 로킹 단위가 작으면 로크 수가 많아 관리하기 복잡하지만 병행성 수준이 높아진다.

 

반응형

'CS > 데이터베이스' 카테고리의 다른 글

트랜잭션  (0) 2020.11.20
시스템 카탈로그  (0) 2020.11.20
뷰(View)  (0) 2020.11.20
내장 SQL(Embedded SQL)  (0) 2020.11.20
정규화(Normalization)  (0) 2020.11.20