0. 트랜잭션 개념
- 밀접히 관련되어 분리될 수 없는 한 개 이상의 데이터베이스 조작을 말한다.
- 하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함된다.
- 트랜잭션은 분할할 수 없는 최소의 단위이다.
- 데이터베이스의 논리적 연산 단위다.
1. 트랜잭션의 4가지 특성
- 원자성(automicity) - 트랜잭션에 정의된 연산들은 모두 성공적으로 실행되던지, 아니면 전혀 실행되지 않은 상태로 남아야 한다. (All or Nothing)
- 일관성(consistency) - 트랜잭션이 실행되기 전에 데이터베이스 내용이 잘못되어 있지 않다면, 트랜잭션이 실행된 이후에도 데이터베이스의 내용이 잘못되어선 안된다.
- 고립성(isolation) - 트랜잭션이 실행되는 중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다.
- 지속성(durability) - 트랜잭션이 성공적으로 수행되면, 갱신된 데이터베이스의 내용은 영구적으로 저장된다.
2. 트랜잭션 조작어 TCL(Transaction Control Language)
- COMMIT : 올바르게 적용된 데이터를 데이터베이스에 반영시키는 것
- ROLLBACK : 트랜잭션 시작 이전의 상태로 되돌리는 것
- SAVEPOINT : ROLLBACK할 때 현시점에서 SAVEPOINT까지 트랜잭션의 일부를 롤백할 수 있다.
- 트랜잭션의 대상이 되는 SQL문은 UPDATE, INSERT, DELETE 등 데이터를 수정하는 DML 문이다.
3. COMMIT, ROLLBACK 이전의 데이터 상태
- 단지 메모리 BUFFER에만 영향을 받았기 때문에 데이터의 변경 이전 상태로 복구 가능하다.
- 현재 사용자는 SELECT 문장으로 결과를 확인 가능하다.
- 다른 사용자는 현재 사용자가 수행한 명령의 결과를 볼 수 없다.
- 변경된 행은 잠금이 설정되어서 다른 사용자가 변경할 수 없다.
4. COMMIT 이후의 데이터 상태
- 데이터에 대한 변경 사항이 데이터베이스에 영구히 반영된다.
- 이전 데이터는 영원히 잃어버린다.
- 모든 사용자는 결과를 볼 수 있다.
- 관련된 행에 대한 잠금이 풀리고, 다른 사용자들이 행을 조작할 수 있게 된다.
5. ROLLBACK 이후의 데이터 상태
- 데이터에 대한 변경 사항은 취소된다.
- 이전 데이터는 다시 재저장된다.
- 관련된 행에 대한 잠금이 풀리고, 다른 사용자들은 행을 조작할 수 있게 된다.
6. COMMIT과 ROLLBACK로 얻는 효과
- 데이터 무결성 보장
- 영구적인 변경을 하기 전에 데이터의 변경 사항 확인 가능
- 논리적인 연관된 작업을 그룹핑하여 처리 가능
'DB' 카테고리의 다른 글
[DB] 공간 데이터베이스 (Spatial DataBase) (0) | 2022.05.31 |
---|---|
[DB] 시계열 데이터베이스 (Time Series Database) (0) | 2022.05.30 |
[DB] DML, DDL, DCL, TCL 명령어의 종류 (0) | 2022.05.25 |
[DB] 분산 데이터베이스 개념, 투명성, 장단점, 분류 (0) | 2022.05.24 |
[DB] 식별자의 개념, 특징, 분류 (0) | 2022.05.21 |