본문 바로가기
자격증/정보처리기사

병행제어(Concurrency Control)와 로킹(Locking)

by 두두리안 2022. 7. 5.
728x90

목차

1.병행 제어(Concurrency Control, 동시성 제어)
2.병행 제어 기법
3.회복(Recovery)

1.병행 제어(Concurrency Control, 동시성 제어)

1-1. 병행 제어의 목적

* 여러 사용자들이 데이터베이스의 공동 사용을 최대화하는 기술
* 사용자의 응답시간을 최소화 한다
* 데이터베이스 시스템의 활용도를 최대화 한다
* 데이터베이스의 일관성을 유지한다

1-2. 병행 처리의 문제점

1. 분실된 갱신(Lost Update)
    * 두개의 트랜잭션이 같은 데이터를 갱신하는 작업을 진행하게 되면서 하나의 작업이 진행되지 않는 경우
2. 모순성(Inconsistency)
    * 두개의 트랜잭션이 같은 데이터를 동시에 갱신하게되어 사용자가 원하는 결과와 일치하지 않은 상태가 되는 경우
3. 연쇄복귀(Cascading Rollback)
    * 두개의 트랜잭션이 같은 데이터를 갱신하는 작업을 진행하는 과정에서 하나의 트랜잭션이 실패하면 원자성에 의해 두 트랜잭션 모두 복귀하는 경우
4. 비완료 의존성(Uncommitted Dependency)
    * 한개의 트랜잭션이 실패하였을때, 이 트랜재션이 회복하기전에 다른 트랜잭션이 실패한 수행 결과를 참조하는 경우

2.병행 제어 기법

2-1. 로킹(Locking)

1. 로킹의 목적
    * 하나의 트랜잭션에서 갱신하는 데이터를 다른 트랜잭션이 접근하지 못하도록 잠그는 행위
    * 로킹의 단위에 따라 데이터베이스의 성능에 영향을 미친다
    * 적절한 로킹단위(로크)를 지정하여 효율적인 병행제어가 될수 있도록 한다
2. 로크의 단위가 큰경우
    * 로크의 개수가 적어져 병행 제어 기법이 단순해진다
    * 병행성(공유도) 수준이 낮아지고 오버헤드가 감소한다
3. 로크의 단위가 작은경우
    * 로크의 개수가 많아져 병행제어 기법이 복잡해진다
    * 병행성(공유도) 수준이 높아지고 오버헤드가 증가한다

2-2. 타임스탬프(Time Stamp) 기법

* 데이터베이스 병행제어를 위해 데이터 항목에 타임스탬프를 부여하여 직렬 가능성을 보장하는 기법

2-3. 낙관적 병행제어(Optimistic Concurrency Control)

* 트랜잭션 수행동안은 어떠한 검사도 하지않고, 트랜잭션 종료시에 일괄적으로 검사하는데 데이터베이스 병행제어기법
* 장기 트랜잭션 철회시 자원낭비 가능성이 있어, 동시 사용 빈도가 낮은 시스템에서 주로 사용한다

2-4. 다중 버전 병행 제어(MVCC: Multi Version Concurrency Control)

* 트랜잭션의 데이터 접근시, 그 트랜잭션의 타임스탬프와 접근데이터의 여러버전의 타임스탬프를 비교하여 현재 실행중인 스케줄의 직렬 가능성이 보장되는 버전을 선택하는 기법

3.회복(Recovery)

3-1. 회복의 개념

* 어떤 장애 요인에 의해 데이터베이스의 일관성 유지에 제약이 걸렸을때, 장애 이전의 상태로 복원하여 일관성을 유지하는 작업

3-2. 장애의 유형

1. 트랜잭션 장애(Transaction Failure)
    * 트랜잭션 내의 논리적 오류로 인하여 트랜잭션이 더 이상 정상적인 실행할수 없는 상태
2. 시스템 장애(System Failure)
    * 하드웨어 오작동으로 인하여 기억장치의 내용이 유실되거나 교착상태 등을 유발하는 경우
3. 미디어 장애(Media Failure)
    * 데이터 전송중에 디스크의 고장으로 인하여 디스크등이 작동하지 못하는 상태

3-3. 회복에 따른 연산자

1. Undo
    * 변경된 데이터를 취소하여 원래의 내용으로 복원시키는 연산
    * 주로 트랜잭션 실행중 실패하였을 경우 원래의 내용으로 복원하는 경우에 사용
2. Redo
    * Undo로 인해 회복이 된 경우에 로그(Log)에 갱신되어 있는 데이터를 데이터베이스에 다시 적용하는 연산

3-4. 회복 기법

1. 로그를 이용한 회복
    * 즉시 갱신: 트랜잭션의 결과를 그 즉시 데이터베이스에 반영, 문제가 발생하면 로그에 있는 갱신 이전의 데이터로 데이터베이스를 복원하여 회복(Undo)
    * 지연 갱신: 갱신 결과를 로그에 기록해 두었다가 트랜잭션이 완료되면 한번에 데이터베이스에 반영(Redo)
2. 검사시점에 의한 회복
    * 로그에 있는 데이터중 어디까지 데이터베이스에 반영을 하는지 결정한는 방식
    * 로그에 있는 내용이 데이터베이스에 반영될때 마다 CheckPoint(SavePoint)를 둔다
    * 장애가 발생하면 CheckPoint 이전에 Redo 연산을, 이후엔 Undo 연산을 실행
3. 그림자 페이징 기법
    * 문제 발생시 로그를 이용하지 않고 그림자 페이지로 대체하여 회복하는 기법
    * 데이터베이스를 일정크기의 페이지 단위로 구분하여 각 페이지에 복사본을 유지
    * 데이터 변경시 현재 페이지의 테이블만 변경하고 그림자 페이지는 이전의 값을 유지

참고자료 : 이기적 환상콤비 정보처리기사

728x90

'자격증 > 정보처리기사' 카테고리의 다른 글

C언어 특징 및 입출력  (0) 2022.07.06
분산 데이터베이스 설계  (0) 2022.07.05
인덱스(Index)와 뷰(View)  (0) 2022.07.04
정규화  (0) 2022.07.04
데이터제어어(DCL)  (0) 2022.07.03