1. 트랜잭션 개요
- 데이터베이스의 논리적 연산단위
- 분리될 수 없는 한개 이상의 데이터베이스 조작
| 특성 | 설명 |
| 원자성(Atomicity) | 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 한다.(all or nothing) |
| 일관성(Consistency) | 트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안 된다. |
| 고립성(Isolation) | 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다. |
| 지속성(Durability) | 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다. |
2. COMMIT
- 트랜잭션의 완료 처리
- 데이터 변경 후 COMMIT OR ROLLBACK 전의 데이터 상태는?
- 단지 메모리 BUFFER에만 영향을 받았기 때문에 데이터의 변경 이전 상태로 복구 가능하다.
- 현재 사용자는 SELECT 문장으로 결과를 확인 가능하다.
- 다른 사용자는 현재 사용자가 수행한 명령의 결과를 볼 수 없다.
- 변경된 행은 잠금(LOCKING)이 설정되어서 다른 사용자가 변경할 수 없다.
- COMMIT 이후의 데이터 상태는?
- 데이터에 대한 변경 사항이 데이터베이스에 반영된다.
- 이전 데이터는 영원히 잃어버리게 된다.
- 모든 사용자는 결과를 볼 수 있다.
- 관련된 행에 대한 잠금(LOCKING)이 풀리고, 다른 사용자들이 행을 조작할 수 있게 된다.
- SQL Server COMMIT
- 기본으로 DML 수행 시 AUTO COMMIT, 별도의 COMMIT, ROLLBACK 필요없음
- 트랜잭션 방식
- AUTO COMMIT
- 암시적 트랜잭션
- 명시적 트랜잭션
3. ROLLBACK
- COMMIT 이전에 변경 사항을 취소하는 명령어
- COMMIT 과 ROLLBACK으로의 효과
- 데이터 무결성 보장
- 영구적인 변경을 하기 전에 데이터의 변경 사항 확인 가능
- 논리적으로 연관된 작업을 그룹핑하여 처리 가능
4. SAVEPOINT
- 롤백할 때 트랜잭션에 포함된 전체 작업을 롤백하는 것이 아니라 현 시점에서 SAVEPOINT까지 트랜잭션의 일부만 롤백할 수 있다.
- 복수의 저장점 정의 가능
자동으로 COMMIT 되는 경우
- DDL문장을 실행하면 그 전후 시점에 자동으로 COMMIT
- DML 문장 이후에 COMMIT 없이 DDL 문장이 실행되면 DDL 수행 전에 자동으로 COMMIT
- 데이터베이스를 정상적으로 접속을 종료하면 자동으로 트랜잭션이 COMMIT
- 애플리케이션의 이상 종료로 데이터베이스와의 접속이 단절되었을 때는 트랜잭션이 자동으로 롤
반응형
'SQLD > SQL 전문가 가이드' 카테고리의 다른 글
| 2.2.3 제3절 계층형 질의와 셀프 조인 (6) | 2025.05.26 |
|---|---|
| 2.2.2 제2절 집합 연산자(set operator) (0) | 2025.05.26 |
| 2.1.3 제3절 DML (0) | 2024.11.04 |
| 2.1.2 제2절 DDL (0) | 2024.10.23 |
| 2.1.1 제1절 관계형 데이터베이스 개요 (0) | 2024.10.23 |