Transaction
오늘은 Transaction에 대해 알아보겠습니다.
Transaction 이란?
- 데이터 베이스의 상태를 변화시키기 위한 하나의 단위
데이터 베이스의 상태를 변화시킨다는 것은 뭘까요?
예를 들어 아래와 같은 테이블이 존재한다고 가정합니다.
각 사용자의 현재 보유한 금액을 저장하는 테이블입니다.
테이블 1.
ID | 이름 | 보유한 금액 |
1 | 이이원 | 1000 |
2 | 이우지 | 2000 |
해당 테이블에 INSERT, UPDATE, DELETE로 상태를 변화시킬 수 있습니다.
밑의 예시 Transaction에서 2개의 행위가 이루어질 수 있습니다.
Transaction 1.
"ID가 1인 사용자의 보유한 금액을 2000으로 변경하세요." (INSERT)
"ID가 2인 사용자를 삭제하세요." (DELETE)
이러한 행위가 이루어질 수 있는데 이런 행위 들을 상태를 변화시킨다고 할 수 있습니다.
Transaction 특징 (ACID)
원자성(Atomicity) : 하나의 Transaction 은 Database에 모두 반영되거나 모두 반영되지 않아야 합니다.
위의 Transaction 1. 에서 2가지 동작(INSERT, DELETE)을 처리했는데 2가지 동작 모두 처리되어야 합니다.
일관성(Consistency) : Transaction의 작업 처리의 결과는 일관성이 있어야 합니다.
예를 들어 위의 테이블에서 "ID는 항상 존재하여야 한다."라는 규칙이 있으면 규칙에 위배되지 않아야 합니다.
독립성(Isolation) : 둘 이상의 Transaction이 실행되고 있을 때 각각 Transaction에서 서로 방해받지 않는 특성을 뜻 합니다.
지속성(Durability) : Transaction이 커밋된 이후에는 결과가 영구적으로 반영되어야 합니다.
Commit과 Rollback
Commit : 하나의 트랜잭션이 성공적으로 끝나서 데이터베이스가 일관성 있는 상태에 있음을 알려 주기 위해 사용하는 연산입니다.
Rollback : 하나의 Transaction 처리가 비정상적으로 종료되어 Transaction 원자성이 깨진 경우
우의 Transaction 1. 에서 원자성이 깨진 경우 즉 INSERT는 성공했으나 DELETE를 실패한 경우 Rollback 됩니다.
Transaction 1. 은 전부 처리되지 않습니다.
이렇게 트랜잭션이 무엇인지 특징 및 Commit Rollback에 대해 알아보았습니다.
궁금한 점이나 내용이 알고 계신 것 과 다르다면 언제든지 편하게 문의 부탁드립니다.