트랜잭션
트랜젝션은 데이터베이스 내에서 수행되는 더 이상 쪼갤 수 없는 최소 작업의 단위로, 데이터베이스의 무결성을 유지하며 상태를 변화시키는 기능을 수행합니다. 트랜잭션은 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 영구성(Durability) 를 보장합니다.
이 성질의 앞 글자를 따서 ACID 라고 부릅니다.
*데이터베이스는 COMMIT 과 ROLLBACK 명령어를 통해 데이터의 무결성을 보장합니다.
Commit : 모든 작업이 성공해서 데이터베이스에 정상 반영하는 것
Rollback : 작업 중 하나라도 실패해서 변경 사항을 취소하고, 이전의 상태로 되돌리는 것
트랜잭션의 목적
은행 시스템에서 A 가 B에게 출금을해서 입금하는 상황이 있습니다. 송금하려는 중 오류가 생겨서 A의 계좌에는 돈이 빠져나가고 B의 계좌에는 입금 되지 않았습니다. 이런 상황은 시스템의 치명적인 오류이며 이와 같은 상황을 막으려면 모든 입출금은 하나의 묶음 형태로 작동해야 합니다. 출금을 하면 입금까지 되던지 아니면 없던 일이 되어야 합니다. 이런 식으로 출금과 입금 두 행위는 더 이상 쪼갤 수 없는 최소 단위이며 이를 트랜잭션이라고 합니다.
추가로 데이터를 다룰 때 장애가 일어나는 경우 이 트랜잭션은 장애 발생시 데이터를 복구하는 작업의 단위가 됩니다. 또한 여러 작업이 동시에 같은 데이터에 접글할 때 트랜잭션을 통해 이 작업을 서로 분리하고 오류가 생기지 않게 합니다. 데이터베이스의 트랜잭션이 이러한 규칙을 유지하도록 지원합니다.
ACID
*Atomicity(원자성)
- 트랜잭션에 포함된 작업은 하나의 작업인 것 처럼 전부 수행되거나 아니면 전부 수행되지 말아야 한다. (all or nothing)
*Consistency(일관성)
- 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다.
- ex) 송금 전 후 데이터의 타입이 바뀌면 안된다.
*Isolation(격리성)
- 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않도록 독립적으로 작업을 수행해야 한다.
- 동시성과 관련된 성능 이슈로 인해 트랜잭션 격리 수준(Isolation level)을 선택할 수 있다.
*Durability(지속성)
- 성공적으로 수행된 트랜잭션은 데이터베이스에 영원히 반영되어야 한다. 저장이 완료 된 데이터베이스는 저장 후에 시스템에 문제가 생겨도 영향을 받지 않아야 한다.
'CS' 카테고리의 다른 글
L4, L7 Load Balancer (0) | 2022.06.12 |
---|---|
GSLB(Global Server Load Balancing) (0) | 2022.06.11 |
가상메모리(virtual memory) (0) | 2022.04.30 |
교착상태(DeadLock) (0) | 2022.04.22 |
스레드와 멀티스레드 (Thread & Multi Thread) (0) | 2022.04.18 |