본문 바로가기
정보처리기사 실기/데이터베이스

SQL - 병행제어

by 밍구몬 2018. 9. 12.

병행제어

 

  • 다중 프로그램의 이즘얼 활용하여 동시에 여래 개의 트랜잭션을 병행 수행할 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호 작용을 제어하는 기술.
  • 병행성이란 여러 개의 트랜잭션들이 동시에 인터리빙하게 실행되는 것을 의미
    (인터리빙 : 트랜잭션들이 번갈아가며 조금씩 자신이 처리해야 일을 처리하는 )

 

 

병행 제어의 목적

 

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

 

병행 제어의 필요성

 

문제점

의미

갱신분실
(Lost Update)

2 이상의 트랜잭션이 같은 데이터를 공유하여 갱신할 갱신 결과의 일부가 없어지는 현상

모순성
(Inconsistency)

복수의 사용자가 동시에 같은 데이터를 갱신할 데이터베이스 내의 대이터들이 상호 일치하지 않아 모순된 결과가 발생하는 현상

연쇄 복귀

(Cascading Rollback

병행 수행되던 트랜잭션들 어느 하나에 문제가 생겨 Rollback되는 경우 다른 트랜잭션들도 함께 Rollback되는 현상

 

잠금(Lock)

 

  • 데이터베이스 관리에서 하나의 트랜잭션에 사용되는 데이터를 다른 트랜잭션이 접근하지 못하게 하는 것을 의미.
  • 트랜잭션들은 어떤 데이터를 접근하기 전에 잠금을 요청하여 잠금을 허락받아야 한다.
  • 데이터를 갱신할 때는 반드시 잠금(Lock) -> 실행(Execute) -> 해제(Unlock) 규칙을 따라야 한다.
  • 잠금단위(로킹단위)
    • 병행 제어에서 번에 잠금할 있는 단위 데이터베이스, 테이블, 레코드, 필드 사용될 있다.
    • 잠금 단위가 크면 잠금 수가 작아 관리하기 쉽지만 굥유성이 저하되고, 잠금 단위가 작으면 잠금 수가 많아 관리하기 복잡하지만 공유성이 높아진다.

 

  • 교착 상태(Dead Lock)
    교어떤 트랜잭션이 사용하기 위해 잠가 놓은 자원을 사용하기위해 기다리므로 모든 트랜잭션들이 실행을 전혀 진전시키지 못하고 무한정 기다리고 있는 상태.

 

  • 공유 잠금 : 트랜잭션 T1 데이터 x 대하여 공유 잠금을 걸면 T2 데이터 x 대하여 읽기만 가능하고 록은 하지 못한다.
  • 배타 잠금 : 트랜잭션 T1 데이터 x 대하여 배타 잠금을 걸면 트랜잭션 T2 x 대하여 읽거나 기록하지 못한다.

 

병행 제어 기법의 종류

 

  • 2-단계 잠금 규약(Two-Phase Lock Protocol) 기법
    • 트랜잭션 스케줄의 직렬성을 보장하는 대표적인 잠금 기법
    • 모든 트랜잭션들이 잠금과 잠금 해제를 다음과 같이 2단계로 수행하도록 한다.
      • 확장(Growing)단계 : 트랜잭션이 잠금만 수행할 있고 잠금 해제는 수행할 없는 단계
      • 축소(Shrinking) 단계 : 트랜잭션이 잠금 해제만 수행할 있고 잠금은 수행할 없는 단계
    • 스케줄의 직렬성을 보장한다는 장점은 있지만 교착 상태를 예방할 수는 없다는 단점이 있다.

 

  • 타임 스탬프 순서(Time Stamp Ordering)기법
    • 타임 스탬프란 시스템이 트랜잭션을 실행할 부여하는 값이다 예를 들어, 트랜잭션이 시스템으로 들어오면 때의 시스템 시간 값이 트랜잭션의 타임 스탬프가 된다.
    • 트랜잭션들을 인터리빙하게 실행한 결과가 시간 스템프 순서대로 트랜잭션들을 실행하는 직렬 스케줄의 실행 결과와 항상 동일하다는 것을 보장하는 기법.
    • 직렬성 순서를 결정하기 위해 트랜잭션 간의 실행 순서를 미리 결정하는 기법들 중에서 가장 보편적인 방법.
    • 타임 스탬프 순서 기법은 읽거나 변경할 데이터에 대해 트랜잭션을 실행하기 전에 타임 스탬프를 부여하고 타임 스탬프 순서에 따라 트랜잭션 작업을 수행하도록 한다.
    • 교착 상태가 발생하지 않는다.

 

 

 

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

로킹 기법 : 주요 데이터의 액세스를 상호 배타적으로 하는 것으로, 트렌젝션들이 어떤 로킹 단위를 액세스 하기 전에 Lock 요청해서 Lock 허락되어야만 로킹 단위를 액세스할 있도록 하는 기법.

 


'정보처리기사 실기 > 데이터베이스' 카테고리의 다른 글

SQL - 고급 데이터베이스  (0) 2018.09.12
SQL - 튜닝  (0) 2018.09.12
SQL - 트랜잭션  (0) 2018.09.12
SQL - 정규화  (0) 2018.09.12
SQL - 함수적 종속  (0) 2018.09.12