숭어싸만코 2022. 11. 1. 14:46

# 트랜잭션(Transaction) 이란?

- 데이터베이스 내에서 하나의 그룹으로 처리되어야 하는 명령문들을 모아 놓은 논리적인 작업 단위이다.

- 데이터베이스 응용 프로그램은 트랜잭션들의 집합으로 정의 할 수 있다.

- 여러 단계의 처리를 하나의 처리처럼 다루는 기능이다.

- 여러 개의 명령어의 집합이 정상적으로 처리되면 정상 종료된다.

- 하나의 명령어라도 잘못되면 전체 취소된다.

- 트랜잭션을 쓰는 이유는 데이터의 일관성을 유지하면서 안정적으로 데이터를 복구하기 위함이다.

 

# 트랜잭션 특성

특성 설명
원자성
(atomicity)
트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행 되지 않은 상태로 남아 있어야 한다. ( All or Nothing )
일관성
(consistency)
트랜잭션이 실행 되기 전의 데이터 베이스 내용이 잘못되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안된다.
고립성
(isolation)
트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다.
지속성
(durablity)
트랜잭션이 성공적으로 수행 되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다.

# Oracle / SQL Server

Oracle SQL Server
DDL 문장 수행 후 자동으로 COMMIT DDL 문장 수행 후 자동 COMMIT (X)
RollBack 불가능 RollBack 가능

# BEGIN TRANSACTION

- BEGIN TRANSACTION으로 시작하면  COMMIT 이나 ROLLBACK으로 트랜잭션 종료

- ROLLBACK 구문을 만난다면 BEGIN TRANSACTION 시점까지 모두 ROLLBACK이 수행된다.

 


# SAVEPOINT

- SAVEPOINT 를 정의하면 ROLLBACK시에 전체작업을 롤백 하는게 아니라 SAVEPOINT까지 트랜잭션의 일부만 롤백할 수 있다.