병행제어(Concurrency Control)

Lys·2023년 11월 30일
0

데이터베이스

목록 보기
12/18

병행(Concurrency)이란

매우 빠르게 여러 트랜잭션 사이를 이동하면서 조금씩 처리를 수행하는 방식을 말한다. 따라서 실제로는 한 번에 한 트랜잭션만 수행하지만, 마치 동시에 여러 트랜잭션을 수행하는 것 처럼 보이게 하는 것이다.

병행제어(Concurrency Control)

트랜잭션이 병행 수행 될 때 트랜잭션이 데이터베이스의 일관성을 파괴하지 않고, 다른 트랜잭션에 영향을 주지 않도록 트랜잭션 간의 상호작용을 제어하는 것을 말한다.

병행제어의 목적

  • 데이터베이스의 일관성 유지
  • 데이터베이스 공유 최대화
  • 시스템 활용도 최대화
  • 사용자 응답 시간 최소화
  • 단위 시간당 트랜잭션 건 수 최대화

병행제어를 하지 않을 경우

  • 갱신 분실
    두 개의 트랜잭션이 같은 데이터에 대해 동시에 갱신 작업을 하면 둘 중 하나의 작업이 분실 되는 경우
  • 모순성
    하나의 트랜잭션이 여러 데이터 갱신 연산을 수행할 때 일관성 없는 상태의 데이터베이스를 가져와 불일치가 발생하는 경우
  • 연쇄복귀
    병행수행 되던 둘 이상의 트랜잭션 중 하나의 트랜잭션에 오류가 발생하여 RollBack하는 경우 다른 트랜잭션들도(성공적으로 일을 수행하였어도) RollBack 되는 경우
  • 비완료성 의존성
    한 개의 트랜잭션이 수행과정에서 실패하였을 때 이 트랜잭션이 회복되기전에 다른 트랜잭션에서 참조하는 경우

병행제어 기법

  • 로킹(Locking)
    트랜잭션이 접근하려는 데이터를 다른 트랜잭션이 접근하지 못하도록 잠그는 기법을 말한다. 이를 통해 상호배제의 기능을 제공하고 잠금이 해제 될 때 까지 독점적으로 사용 가능하다.

  • 타임스탬프(Time Stamp)
    비직렬 트랜잭션을 순서에 따라 직렬화 시키는 방법으로 데이터에 접근하는 시간을 미리 정하여 정해진 시간대로 데이터에 접근하며 수행한다. 시간을 나눠 사용하기 때문에 교착상태가 발생하지 않지만 연쇄복귀를 초래할 수 있다.

  • 낙관적 병행제어(Optimistic Concurrency Control)
    트랜잭션 수행 동안 어떠한 검사도 진행하지 않고, 트랜잭션 종료 시 일괄적으로 검사하는 방식으로 트랜잭션 수행 동안 그 트랜잭션을 위해 유지되는 데이터 항목의 지역사본에 대해서만 갱신하고, 트랜잭션 종료 후 직렬화를 검증하여 데이터베이스를 한번에 반영하는 방식이다.

  • 다중 버전 병행제어(Multi-version Concurrency Control)
    다중 버전 타임 스탬프 기법이라고도 하며, 한 데이터에 대해 여러 버전의 값을 유지하며 관리하는 방식으로 조회성능을 최대한 유지하기 위한 기법이다. 트랜잭션 간의 충돌 문제는 대기가 아니라 복귀처리 하기 때문에 연쇄복귀를 초래할 수 있다.

🙇‍ 참고 사이트 🙇‍

https://kosaf04pyh.tistory.com/300
https://rebro.kr/163

0개의 댓글

관련 채용 정보