오늘은 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에 대해 알아보았습니다.
궁금한 점이나 내용이 알고 계신 것 과 다르다면 언제든지 편하게 문의 부탁드립니다.
'Database' 카테고리의 다른 글
트랜잭션 격리 수준 (Transaction Isolation Level) (1) | 2022.09.28 |
---|---|
H2 Database PARSEDATETIME (0) | 2022.08.06 |
SQLD 43회 시험 후기 (0) | 2021.12.17 |
count(*), count(column) 차이점 (0) | 2021.11.22 |