TRANSACTION

Hyuntae Jung·2022년 7월 28일
0

MS SQL

목록 보기
32/41
post-thumbnail

Contents

  • TRANACTION 기본 개념
  • TRANACTION 처리 과정
  • TRANACTION 로그파일의 기능 및 Locking
  • TRANACTION 종류 및 특성

1. TRANSACTION

: 하나의 논리적인 작업단위로 여러 명렁의 묶음(INSERT, DELETE, UPDATE 명령들의 묶음)

트랜잭션은 작업의 한 단위입니다. 트랜잭션이 성공하면 트랜잭션 동안 이루어진 모든 데이터 수정은 커밋되고 데이터베이스의 영구적인 부분이 됩니다. 트랜잭션에 오류가 발생하여 취소되거나 롤백되면 모든 데이터 수정은 지워집니다.
https://docs.microsoft.com/ko-kr/sql/t-sql/language-elements/transactions-transact-sql?view=sql-server-ver16

BEGIN TRANSACTION  -- 자동으로 sql server 에서 붙인다.
	UPDATE ccc SET ADDRESS = '경기도 시흥' 
	WHERE id = 'aaa'; 
COMMIT TRANSACTION -- 자동으로 sql server 에서 붙인다.
BEGIN TRANSACTION  -- 사용자가 명시
	UPDATE ccc SET ADDRESS = '경기도 시흥' WHERE id = 'aaa'; 
	UPDATE ccc SET ADDRESS = '경기도 광주' WHERE id = 'bbb'; 
	UPDATE ccc SET ADDRESS = '경기도 용인 ' WHERE id = 'ddd'; 
COMMIT TRANSACTION -- 사용자가 명시

SELECT *
  FROM ccc;

mdf파일의 변화는 없이 ldf파일만 수정한다.

CREATE TABLE ccc2 (
  number INT
);

insert ccc2 values(10);
insert ccc2 values(20);
insert ccc2 values(30);

BEGIN TRAN
	UPDATE ccc2 SET number = 100 WHERE number = 10;
	UPDATE ccc2 SET number = 200 WHERE number = 20;
	UPDATE ccc2 SET number = 300 WHERE number = 30;
COMMIT TRAN

SELECT *
  FROM ccc2;

Dirty page로 메모리(Cash)에 존재하는 데이터를 보여주기 때문에 TRAN이 적용되어 있다.

SELECT @@trancount;

:현재 실행중인 트랜잭션의 갯수를 알아보기위한 함수, @@trancount

TRANSACTION 중일 경우에는 해당 테이블에 Lock을 발생시켜 다른 사용자가 접근 할 수 없게 된다.

2. TRANACTION 진행 중 테이블 잠금 해제

USE tempDB;
ALTER DATABASE sampleDB SET ALLOW_SNAPSHOT_ISOLATION ON;
SET TRANSACTION ISOLATION LEVEL SNAPSHOT;

3. TRANACTION의 특성(ACID)

  • Atomicity (원자성): 분리할 수 없는 하나의 단위이다. 작업이 모두 수행되거나 하나도 수행되지 않아야 한다.
  • Consistency (일관성): TRANACTION에 사용되는 모든 데이터는 일관되어야 한다.
  • Isolation (독립성): 현재 TRANACTION이 접근하고 있는 데이터는 다른 TRANACTION과 격리되어야 한다.
  • Durability (지속성): TRANACTION이 정상적으로 종료된다면 그 결과는 시스템 오류가 발생하더라도 시스템에 영구적으로 적용된다.

4. COMMIT TRAN과 COMMIT WORK

  • COMMIT TRAN: 트랜잭션의 이름을 지정해서 commit 을 시킬 수 있다.
  • COMMIT WORK: 현재 실행중인 트랜잭션 중에서 가장 가까운 트랜잭션만을 커밋 시킨다.
  • ROLLBACK TRAN: 트랜잭션을 취소
  • SAVE TRAN: 트랜잭션의 내용이 길경우 중간에 위치를 지정해서 그 지점까지의 저장 할 수 있다.
	BEGIN TRAN
		SQL 명령...
	COMMIT TRAN(=COMMIT WORK)

5. TRANSACTION의 종류

  • 자동 커밋 트랜잭션
    : 자동적으로 BEGIN TRAN 과 COMMIT TRAN을 명시하는 방식. SQL Server에서는 자동 커밋을 디폴트로 사용한다.
  • 명시적 트랜잭션
    : 사용자가 직접 BEGIN TRAN과 COMMIT TRAN, ROLLBACK TRAN을 명시하는 방식
  • 묵시적 트랜잭션(암시적 트랜잭션)
    :쿼리문을 실행했을 때 자동으로 BEGIN TRAN을 명시하지만, COMMIT TRAN, ROLLBACK TRAN은 자동으로 명시하지 않는 방식(사용자가 직접 COMMIT TRAN을 결정하는 방식)

설정방법
: SET IMPLICIT TRANSACTION ON

6. IMPLICIT TRANSACTION의 쿼리 명령

  • ALTER TABLE
  • FETCH
  • REVOKE
  • CREATE
  • GRANT
  • SELECT
  • DELETE
  • INSERT
  • UPDATE
  • TRUNCATE TABLE
  • DROP
  • OPEN

암시적 트랜잭션이 한번이 수행되면, COMMIT 이나 ROLLBACK 명령이 수행되기 전까지는 암시적 트랜잭션이 중복되어 시작되지 않는다.

강의: ms sql 2014 제대로 배우기 2

0개의 댓글