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 |