트랜잭션의 특성에는 '원자성', '일관성', '고립성(독립성)', '영속성'이 있습니다. 이러한 특성과 트랜잭션의 상태 변화까지 알아보겠습니다.
[ Contents ]
1. 트랜잭션 (Transaction)
DB 상태를 변화시키는 일련의 작업 단위
부분적으로 실행되서는 안되는 '일련의 작업 단위'를 트랜잭션이라고 합니다. 예를 들어 계좌이체에서 오류가 발생해서 돈만 빠져나가고 상대방에게는 입금이 안되었다면 큰일이겠죠. 그래서 트랜잭션은 병행제어 및 회복 작업의 논리적 단위로서 자주 언급됩니다.
2. 트랜잭션의 특성 (ACID)
1) 원자성 (Atomicity)
트랜잭션 실행은 모두 완료되거나, 실패 시 실행 이전으로 돌아가야 함
앞서 말했듯이, 트랜잭션은 부분 성공해서는 안 됩니다. 모두 완료하거나 실행 이전으로 복구해야 합니다.
프로시저 역시, 모두 성공적으로 완료해야 작업이 반영되며 실패 시 원래대로 복구하고 오류 메시지를 띄웁니다.
2) 일관성 (Consistency)
트랜잭션 실행 후에도 데이터베이스의 상태는 유효해야 한다
트랜잭션 실행 후에도 데이터베이스의 제약이나 규칙을 만족하여 일관성을 유지해야 합니다. 예를 들어, '모든 학생은 학번이 존재해야 한다'라는 학사 시스템 DB의 제약조건이 있다고 합시다.
하지만 입학예정인 신입생은 등록 전이라 학번이 없습니다. 그래서 신입생에게는 임시 학번을 부여하는 경우가 많습니다. 이 또한 일관성을 유지하기 위한 방책이죠.
3) 격리성 (Isolation)
둘 이상의 트랜잭션이 동시에 실행되는 경우, 서로 독립적으로 실행되어야 한다
실행 중인 트랜잭션의 중간 결과는 다른 트랜잭션이 참조하거나 변경할 수 없습니다. 동시에 병행 처리한다고 하더라도, 각 트랜잭션은 독립적으로 연속되어 실행한 결과와 같아야 합니다.
4) 영속성 (Durabilty)
성공적으로 완료된 트랜잭션 결과는 영구 기억장치에 반영해야 한다
오류가 나더라도 성공적으로 완료된 트랜잭션 결과는 영구적으로 저장되어야 합니다. 이를 위해서 실행 로그를 남기고, 회복(복원) 작업을 시행합니다.
혹여 로그를 남기지 못했다면, 원자성에 위배되므로 해당 트랜잭션 이전으로 돌아가야 합니다.
3. 트랜잭션의 상태 (State)
- 활동(Active): 트랜잭션이 실행 중인 상태
- 실패(Fail): 오류로 인해 중단된 상태
- 철회(Aborted): 비정상 종료되어 Rollback 연산 수행된 상태
- 부분 완료(Partially Committed): 마지막 연산을 끝내고, Commit만 남은 상태
- 완료(Committed): 실행이 성공적으로 완료되어 Commit한 상태
트랜잭션은 실행 완료 후 Commit하거나, 오류로 인해 Rollback되게 됩니다.
'CS > DB' 카테고리의 다른 글
[DB] 데이터베이스 로그 회복 기법 (즉시 갱신, 지연 갱신) (0) | 2023.04.25 |
---|---|
[DB] 데이터베이스 장애와 회복 기법 (Redo 재실행, Undo 취소) (0) | 2023.04.25 |
[DB] 데이터베이스 정규화 (제 1, 2, 3, 보이스/코드, 4, 5 정규형) (0) | 2023.04.24 |
[DB] 데이터베이스 이상현상(삽입, 삭제, 갱신)과 함수종속성 개념과 예시 (0) | 2023.04.24 |
[DB] 가상 테이블, 뷰(VIEW)의 특성과 장단점 (0) | 2023.04.23 |
댓글