병행제어
- 다중 프로그램의 이즘얼 활용하여 동시에 여래 개의 트랜잭션을 병행 수행할 때 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호 작용을 제어하는 기술.
- 병행성이란 여러 개의 트랜잭션들이 동시에 인터리빙하게 실행되는 것을 의미
(인터리빙 : 트랜잭션들이 번갈아가며 조금씩 자신이 처리해야 할 일을 처리하는 것)
병행 제어의 목적
- 데이터베이스의 공유도 최대화
- 시스템의 활용도 최대화
- 사용자에 대한 응답 시간을 최소화
- 단위 시간당 트랜잭션 처리 건수를 최대화
- 데이터베이스의 일관성 유지
병행 제어의 필요성
문제점 |
의미 |
갱신분실 |
2개 이상의 트랜잭션이 같은 데이터를 공유하여 갱신할 때 갱신 결과의 일부가 없어지는 현상 |
모순성 |
복수의 사용자가 동시에 같은 데이터를 갱신할 때 데이터베이스 내의 대이터들이 상호 일치하지 않아 모순된 결과가 발생하는 현상 |
연쇄 복귀 (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 |