본문 바로가기

프로그래밍 학습/SQL

[MSSQL] 트랜잭션의 개념과 이해

728x90




트랜잭션은 하나의 논리적 작업 단위로 수행되는 일련의 작업이다. 이 정의에는 전부되거나 전부 되지 않는의 의미가 포함되어 있다.트랜잭션은 우리가 주로 사용하는 은행업무에 비교할 수 있다. 우리가 사용하는 SQL문에는 COMMIT TRAIN이 디폴트로 설정되어 있어서 자동적으로 실행을 해주었다. 트랜잭션은 아래와 같은 특성을 가지고 있다.


원자성:(Atomicity) 

트랜잭션은 분리할 수 없는 하나의 단위로서 작업이 모두 수행되거나 수행되지 않아야 한다.


일관성(Consistency)

트랜잭션에서 사용되는 모든 데이터는 일관되어야 한다. 잠금과 관련이 깊다.


격리성(Isolation)

현재 트랜잭션이 접근하고 있는 데이터는 다른 트랜잭션으로부터 격리되어야 한다.


영속성(Durability)

트랜잭션이 정상적으로 종료된다면 그 결과는 시스템 오류가 발생하더라도 시스템에 영구적으로 적용된다.


트랜잭션의 종류

자동 커밋 트랜잭션(Autocommit Transaction)


사용구문


INSERT 문                                               BEGIN TRAN        

GO                            ------>                      INSERT 문

DELETE 문                                              COMMIT TRAN

GO                                                         GO       

                  BEGIN TRAN

              DELETE 문

              COMMIT TRAN



이해가 가셨나요?? 각 쿼리마다 SQL server는 디폴트로 자동 커밋 트랜잭션을 사용합니다.


명시적 트랜잭션(Explicit Transaction)

직접 BEGIN 문과 COMMIT TRAN 문을 써주는 것을 말한다.


사용구문 

BEGIN TRAN

INSERT 문

COMMIT TRAN

GO


암시적 트랜잭션(Implicit Transaction)

오라클 등의 데이터베이스와 호환하기 위해 사용되고 BEGIN TRAN은 자동적으로 붙여주지만 COMMIT TRAN 은 직접 써줘야 한다.  COMMIT TRANSACTION 을 쓰기 전까진 계속 진행 중인 상태가 된다.


사용구문

SET IMPICIT_TRANSACTIONS ON