개발스토리

회복과 병행 제어 본문

Computer Science/데이터베이스

회복과 병행 제어

무루뭉 2021. 5. 24. 15:26

자자자자!!! 

회복과 병행 제어를 이해하려면 기본 단위인 트랜잭션의 개념을 알아야 한다.

그러고나서, 데이터베이스를 장애로부터 복구하는 다양한 회복 기법을 익히고, 여러 사용자가 동시에 접근할 수 있도록 트랜잭션 수행을 통제하는 병행 제어 기법을 익혀보자잉

 

트랜잭션(transaction)

 

■ 트랜잭션의 개념

- 하나의 작업을 수행하는데 필요한 데이터베이스 연산들을 모아놓은 것

- 작업 수행에 필요한 SQL문 들의 모임. 특히, 데이터베이스를 변경하는 추가, 삭제, 수정문의 실행을 관리

- 논리적인 작업의 단위

- 장애 발생 시 복구 작업이나 병행 제어 작업을 위한 중요한 단위로 사용된다.

- 데이터베이스의 무결성과 일관성을 보장하기 위해 작업 수행에 필요한 연산들을 하나의 트랜잭션으로 제대로 정의하고 관리해야 한다.

트랜잭션의 예

■ 트랜잭션의 특성(ACID)

ACID는 중요한 개념이다. 이해하세용~~ 

ACID는 Atomicity, Consistency, Isolation, Durability의 모임이다! 하나하나 봐보쟈~~

● Atomicity(원자성)

- 트랜잭션의 연산들이 모두 정상적으로 실행되거나 하나도 실행되지 않아야 하는 all-or-nothing 방식을 말한다.

- 만약 트랜잭션 수행 도중에 장애가 발생하다면, 지금까지 실행한 연산 처리를 모두 취소하고, 데이터베이스를 트랜잭션 작업 전 상태로 되돌려야 한다.

- 원자성의 보장을 위해 장애 발생 시 회복 기능이 필요하다.

생각해보자,

만약에 성호는 만원을 갖고 있는데 은경이 한테 오천원을 이체했다. 그런데! 오류가 나서 은경이는 오천원을 못 받았다. 근데! 성호 통장에서는 오천원이 빠져나가있네!? 얼마나 억울하겠나... 여기서 이체가 하나의 트랜잭션이고 장애가 발생했다면 작업이 취소되고 성호의 통장에 만원이 고대로 남아있어야 한다. 계좌이체전의 데이터베이스 상태로 돌아가야 한다는 것이다.

● Consistency(일관성)

- 트랜잭션이 성공적으로 수행된 후에도 데이터베이스가 일관된 상태를 유지해야 한다.

그림으로 이해하자~~

● Isolation(격리성)

- 수행 중인 트랜잭션이 완료될 때까지 다른 트랜잭션들이 중간 연산 결과에 접근할 수 없다.

- 격리성의 보장을 위해서는 여러 트랜잭션이 동시에 수행되더라도 마치 순서대로 하나씩 수행되는 것처럼 정화하고 일관된 결과를 얻을 수 있도록 제어하는 기능이 필요하다.

예를 들어서, 아메리카노를 주문을 했는데 취소를 하고 싶다! 그러면 주문 트랜잭션이 완료되고 취소 트랜잭션이 이루어져야 하고 주문 트잰잭션이 진행중인데 취소 트랜잭션이 끼어들면 안된다는 것이다!

● Durability(지속성)

- 트랜잭션이 성공적으로 완료된 후 데이터베이스에 반영한 수행 결과는 영구적이어야 한다.

- 지속성의 보장을 위해서는 장애 발생 시 회복 기능이 필요하다.

 

정리해볼까~~~~~~~~??

 

■ 트랜잭션의 주요 연산

● 커밋 연산

- 트랜잭션의 수행이 성공적으로 완료되었음을 선언하는 연산

- 커밋 연산이 실행되면 트랜잭션의 수행 결과가 데이터베이스에 반영되고 일관된 상태를 지속적으로 유지하게 된다.

● 롤백 연산

- 트랜잭션의 수행이 실패했음을 선언하는 연산

- 롤백 연산이 실행되면 트랜잭션이 지금까지 실행한 연산의 결과가 취소되고 데이터베이스가 트랜잭션 수행 전의 일관된 상태로 되돌아 간다.

 

■ 트랜잭션의 상태

● 활동 상태

- 트랜잭션이 수행되기 시작하여 현재 수행중인 상태

● 부분 완료 상태

- 트랜잭션의 마지막 연산이 실행을 끝낸 직후의 상태

● 완료 상태

- 트랜잭션이 성공적으로 완료되어 커밋 연산을 실행한 상태

- 트랜잭션이 수행한 최종 결과를 데이터베이스에 반영하고 데이터베이스가 새로운 일관된 상태가 되면서 트랜잭션이 종료된다.

● 실패 상태

- 장애가 발생하여 트랜잭션의 수행이 중단된 상태

● 철회 상태

- 트랜잭션의 수행 실패로 롤백 연산을 실행한 상태

- 지금까지 실행한 트랜잭션의 연산을 모두 취소하고 트랜잭션이 수행되기 전의 데이터베이스 상태로 되돌리면서 트랜잭션이 종료된다.

- 철회 상태로 종료된 트랜잭션은 상황에 따라 다시 수행되거나 폐기된다.

'Computer Science > 데이터베이스' 카테고리의 다른 글

회복과 병행제어3  (0) 2021.05.25
회복과 병행제어2  (1) 2021.05.25
정규화  (0) 2021.05.22
데이터베이스 설계  (0) 2021.05.22
SQL  (1) 2021.04.10
Comments