728x90
반응형
SMALL

데이터베이스는 혼자 쓰는 공간이 아니기 때문에 당연히 여러 사용자가 동시에
접근해서 읽기,수정하기,삭제하기 등의 Transaction을 마구잡이로 실행한다.
따라서 정확한 교통정리가 없으면 데이터베이스의 데이타는 정합성이 깨지면서
데이터는 엉망이 되고 말것이다.
그레서 데이터베이스에서는 Transaction 에 대한 4원칙 즉 ACID를 따르도록
되어 있으며 이 ACID를 보장하기 위해서는 Isolation Level (격리수준) 을 결정해서
적용해야 한다.

Transacton 이란?

데이터베이스에서 트랙잰션(Transaction) 이란 데이터에 대한 하나의 논리적 실행 단계를
말한다.  좀 어려운 용어정의인데.. 예를 들자면  계좌이체를 생각해 보면 계좌이체는
A라는 송신자 통장에서 돈을 빼서 B라는 수신자의 통장에 돈을 넣는 2가지 단계로 
이루어 지듯이 이 두단계에서 데이터에 대한 처리를 하는 논리적 행위를 트랜잭션
(Transaction) 이라고 한다.
그런데 만약 A송신자 통장에서 돈만 빠져나가고 B 수신자 통장에는 오류가 나서 돈이
안들어 왔다면 정말 큰일이다. 따라서 트랙잭션은 이 다음에 설명할 ACID 를 반드시
충족해야 한다.

ACID 란?

위 에에서 설명한 계좌이체 거래(트랜잭션,Transaction) 는 아래 4가지 원칙을 만족해야 한다.

종류 내용
Atomicity (원자성)

하나의 Transaction은 모두 수행되거나 모두 수행되지 말아야 한다. 
Commit ,Rollback 을 통해 모두 적용되거나 모두 취소되어야 한다.
수행 중간에 오류가 있으면 이미 한것도 모두 취소가 되어야 한다.
계좌이체 트랜잭션(Transaction) 에서 보면 A통장에서 돈인 인출되고
B통장에 돈이 입금되는 두 행위가 둘다 모두 성공하거나 아니면 둘다 모두
취소되어야 한다는 뜻이다.

Consitency (일관성)

트랜잭션(Transaction) 실행이 성공적으로 완료되었을 때에는 
이전의 상태와 실행후의 상태가 안정적이고 일관성(Consistency)이 있어야
한다는 뜻이다.
위 계좌이체에서 A통장에 3,000원이 있었고 B통장에는 2,000 원이 있었다면
총 합계는 5,000원이 된다.  이상태에서 500원을 A통장에서 B통장으로 이체
했을 경우 A통장은 2,500원이 되고 . B통장은 2,500원이 되고 총 합계는
트랜잭션 수행되기 이전인 5,000원과 동일해야 한다는 뜻이다.
(머 당연한 이야기이겠지만...) 

Isolation (고립성) 트랜잭션(Transaction) 간에는 서로 독립성이 있어야 한다는 뜻이다.
예를 들어 계좌이체에서 A통장에 5,000원이 있는 상태에서 B통장에 3,000원
을 이체하는 트랙잰션 도중에 A통장에서 4,000원을 인출해서 C통장에
이체하는 거래가 끼어드는 경우.. 어떻게 될까?? 이 고립성(Isolation)을 
만족시키지 못한다면 A통장에서 B통장으로 3,000원 , C통장으로 4,000원이
나가는 ...자기 통장잔액 5,000원 보다 더 많은 7,000원이 나가는 사태가 
발생할 것이다. 그러면 총합계도 틀어지면서 일관성(Consistency) 도 충족하지
못하게 되는 것이다. 
그러면 이때에는 어떻게 해야할까??. 첫번째 트랜잭션이 Commit 이나 Rollback 이 되기전까지는 두번째 트랜잭션은 기다려야 한다..

Durability (영속성/지속성) 성공적으로 수행이 완료된 트랜잭션의 결과는 영원해야 한다는 뜻이다.
즉 시스템에 장애가 발생해도 그 결과는 유지되어야 한다는 뜻이다.
이러한 것을 해주는 것이 데이터베이스의 복구 기능이다.


ACID와 데이터베이스 관계

구분 관계
Atomicity (원자성) Commit / Rollback
회복성의 보장

트랜잭션은 분해가 불가능한 논리적  최소 단위로 실행 전체가 승인되거나 취소 되어야 함. (All or Nothing)

Consitency (일관성) 무결성 조건 
동시성 제어

트랜잭션의 수행 이후 데이터는 무결성이 유지되고 모순되지 않아야 함.

Isolation (고립성) Isolation Level (고립수준)
분산 트랜잭션
Lock

다수의 트랜잭션이 동시에 수행되더라고 개별 트랜잭션의 결과에 영향을 미쳐서는 안됨.

Durability (영속성/지속성) 회복기법 (Redo/Undo)

성공적으로 수행된 트랜잭션은  해당 요인에 의해 변경 및 손실되지 않아야 함.

 

728x90
반응형
LIST

+ Recent posts