Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

UpDown Dev Story

[데이터베이스] 회복 및 병행제어 본문

Study

[데이터베이스] 회복 및 병행제어

updown 2021. 6. 4. 21:56

트랜잭션(Transaction)

- 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위

- 한꺼번에 모두 수행되어야 할 일련의 연산

- 데이터베이스 시스템에서 병행제어 및 회복작업시 처리되는 작업의 논리적 단위

- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위

- 하나의 트랜잭션은 Commit 되거나 Rollback 된다.

트랜잭션의 특성 ACID

데이터의 무결성을 보장하기 위한 DMBS의 트랜잭션이 가져야 할 특성

Atomictity (원자성)

- 트랜잭션의 연산은 데이터베이스에 모두 반영되던지 전혀 반영되지 않아야 한다.

- 트랜잭션 내의 모든 명령은 완벽히 수행되어야 하며 하나라도 오류가 발생하면 트랜잭션 전부 취소

Consistency (일관성)

- 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환

- 시스템이 갖고 있는 고정요소는 트랜잭션 수행전과 수행완료 후의 상태가 같아야 한다.

ex) 은행업무 처리 시스템에서 지점간 돈 이동시 이동 전의 전체 은행이 소유하고 있는 돈의 합계와 이동 후의 합계가 같아야 하고, 고객으로부터 입금된 돈이 있으면 입금 전 합계에 입금된 금액만큼 증가된 합계가 된다.

Isolation (독립성, 격리성, 순차성)

- 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중 다른 트랜잭션의 연산이 끼어들 수 없다.

- 수행중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없다.

Durability (영속성, 지속성)

- 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.

Commit, Rollback 연산

Commit 커밋 연산

- 한 개의 논리적 단위(트랜잭션)에 대한 작업이 성공적으로 끝났고 데이터베이스가 다시 일관된 상태일 때 트랜잭션이 행한 갱신 연산이 완료된 것을 트랜잭션 관리자에게 알려주는 연산

Rollback 롤백 연산

- 하나의 트랜잭션 처리가 비정상적으로 종료되어 일관성을 깨뜨렸을 때 트랜잭션 일부가 정상 처리되었더라도 트랜잭션의 원자성(Atomicity)을 구현하기 위해 트랜잭션이 행한 모든 연산을 취소(Undo)하는 연산.

 

회복 (Recovery)

회복관리기 (Recovery Management)

- DBMS의 구성요소로 트랜잭션 실패시 데이터베이스의 모든 변화를 Undo 시키는 역할, Dump와 Log 이용

- 메모리 덤프(Dump) : 주기적으로 데이터베이스 전체를 복사해두는 것

- 로그(Log) : 갱신되기 전후의 내용을 기록하는 별도의 파일. = 저널(Journal)

병행제어 (Concurrency Control)

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

병행제어의 목적 : 데이터베이스 공유 최대화, 시스템 활용도 최대화, 데이터베이스 일관성 유지, 사용자에 대한 응답시간 최소화

병행수행 : 다중 프로그램 환경에서 여러 개의 트랜잭션을 병행수행한다는 것은 같은 시간에 여러 개의 명령을 동시에 실행하는 것이 아니라 시분할이나 입출력 인터럽트 기법 등을 이용하여 일정 시간 내에 각 트랜잭션에 있는 명령들이 시간적으로 번갈아 실행되는 것

직렬성(Serializability) 병행수행된 각각의 트랜잭션 결과는 각 트랜잭션을 독자적으로 수행시켰을 때 결과와 같아야 한다.

병행수행의 문제점 : 갱신 분실(Lost update), 비완료 의존성(Uncommotted Dependency), 모순성(Inconsistency), 연쇄복귀(Cascading Rollback)

병행제어 기법의 종류 : 로킹(Locking), 타임 스탬프 순서(Time Stamp Ordering), 최적 병행수행, 다중 버전 기법

로킹(Locking)

- 로킹단위가 작아지면 관리하기 복잡해 오버헤드가 증가하지만 병행성 수준이 높아진다.

- 로킹단위가 크면 로크수가 작아 관리하기 쉽지만 병행성 수준이 낮아진다.

- 데이터베이스, 파일, 레코드 등은 로킹 단위가 될 수 있다.

- 로킹 단위가 작아지면 로킹 오버헤드가 증가한다.

- 한꺼번에 로킹할 수 있는 단위를 로킹 단위라고 한다.

※ 병행성 수준 : 데이터베이스 공유도

Comments