"쪼갤 수 없는 업무 처리의 최소 단위"
ex) 'A라는 사람이 B라는 사람에게 1000원을 지급, B가 그 돈을 받을 경우'
이는 더이상 작게 쪼갤 수 없는 하나의 트랜잭션임
A의 돈 지불 행위와 B의 돈 받는 행위는 별개로 분리될 수 없음
트랜잭션 처리가 정상적으로 완료될 경우 커밋을 하고, 오류가 발생할 경우 원래 상태대로 롤백해야 함.
목적
데이터베이스 서버에 여러 개의 클라이언트가 동시에 액세스하거나 ,
응용프로그램이 갱신을 처리하는 과정에서 중단될 수 있는 경우 등 데이터 부정합을 방지하고자 할 때 사용
조건 ACID
1.원자성 (Atomicity)
하나의 트랜잭션이 더 이상 작게 쪼갤 수 없는 최소한의 업무 단위
트랜잭션이 데이터베이스에 모두 반영되던지, 아니면 전혀 반영되지 않아야 함
All or Nothing의 개념으로서 작업 단위를 일부분만 실행하지 않는다는 것을 의미한다.
2.일관성 (Consistency)
트랜잭션이 완료된 결과값이 일관적인 DB상태를 유지하는 것
시스템이 가지고 있는 고정요소는 수행 전과 후가 같아야 함
(A에서 B로 돈을 이체할 때 A와 B계좌의 돈의 총합이 같아야 함)
3.고립성 (Isolation)
하나의 트랜잭션 수행 시 다른 트랜잭션의 작업이 끼어들지 못하도록 보장
트랜잭션끼리 서로를 간섭할 수 없음
트랜잭션이 실행하는 도중에 변경한 데이터는 이 트랜잭션이 완료될 때까지 다른 트랜잭션이 참조하지 못하게 하는 특성
(하나의 트랜잭션이 A라는 계좌에서 작업을 하고 있을 경우 다른 트랜잭션은 A계좌에 대해 참조하거나 관여 불가)
4.지속성 (Durability)
트랜잭션이 정상적으로 종료된 다음에는 영구적으로 데이터베이스에 작업의 결과가 저장되어야 한다
트랜잭션이 정상적으로 완료된 경우에는 버퍼의 내용을 하드디스크(데이터베이스)에 확실히 기록해야 하며
부분 완료(Partial Commit)된 경우에는 작업을 취소(Aborted)하여야 한다
'CS > 데이터베이스(DB)' 카테고리의 다른 글
[DB] NoSQL (+Redis) (0) | 2023.12.17 |
---|---|
[DB] clustered / non clustered index (0) | 2023.12.17 |
[DB] Union vs Union All (+JOIN) (0) | 2023.12.17 |
[DB] 정규화 (1) | 2023.12.17 |
[DB] 키(key) (0) | 2023.12.17 |