1. 트랜잭션 개요

데이터 베이스의 논리적 연산 단위

분리될수 없는 이상의 데이터 베이스 조작

분할할 없는 최소의 단위

하나의 논리적인 작업단위를 구성하는 세부적인 연산들의 집합

DML(update, delete, insert ..)등의 데이터 수정문이 대상임

Ex) 은행의 계좌이체

 

트랜잭션의 특성

특성

설명

원자성

정의된 연산은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아야 , 에러가 생기면 전부 롤백해야함

일관성

실행전의 데이터베이스 내용이 잘못되어있지 않았따면 실행 후에도 내용이 잘못되면 안됨

고립성

실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안됨

지속성

성공적으로 수행되면 갱신한 데이터베이스 내용은 영구적으로 저장

동시 접근이 불가능하도록 다양한 레벨의 잠금 기능을 제공

트랜잭션 수행시 잠금(LOCKING)상태가

 

트랜잭션에 대한 격리성이 낮은 경우 발생하는 문제점

  1. Dirty Read : 다른 트랜잭션에 의해 수정되었지만 아직 커밋되지 않은 데이터를 읽는
  2. Non-Repeatable Read : 트랜잭션 내에서 같은 쿼리를 수행 했는데, 사이에 다른 트랜잭션이 값을 수정 또는 삭제하는 바람에

    쿼리 결과가 다르게 나타남

  1. Phantom Read : 트랜잭션 내에서 같은 쿼리를 수행 했는데, 번째 쿼리에서 없던 유령 레코드가 두번째 쿼리에서 나타나는 현상

 

2. COMMIT

COMMIT이나 ROLLBACK 이전의 데이터 상태

데이터 변경의 이전 태로 복구 가능, select문으로 결과 확인 가능, 타인은 현재 사용자가 수행한 명령 결과만 볼수 있음, LOCKING 되어있음

COMMIT 이후 상태

변경 사항이 데이터베이스에 반영, 이전 데이터는 영원히 잃어버림, 모든 사용자는 결과 확인 가능, 잠금이 풀리고 다른 사용자들도 조작 가능

ORACLE에서는 DML이후 COMMIT ROLLBACK 수행해야 트랜잭션 종료

SQL server 기본적으로 AUTO COMMIT 모드

 

SQL server 트랜잭션

  1. AUTO COMMIT : DBMS 트랜잭션을 컨트롤
  2. 암시적 트랜잭션 : 사용자가 명시적으로 COMMIT 또는 ROLLBACK 처리, 세션 단위로 설정은 SET IMPLICIT TRANSACTION ON 사용
  3. 명시적 트랜잭션 : 시작과 모두 사용자가 명시적으로 지정하는 방식 BEGIN으로 시작하고 COMMIT 또는 ROLLBACK으로 종료

 

3. ROLLBACK

데이터 변경사항이 취소되고 이전상태로 복구

SQL server AUTO COMMIT이고 임의적으로 수행하려면 명시적으로 트랜잭션을 선언해야함

 

COMMIT ROLLBACK 효과

  • 데이터 무결성 보장
  • 영구적인 변경 데이터 변경사항 확인 가능
  • 논리적으로 연관된 작업으 그룹핑하여 처리 가능

 

4. SAVEPOINT

저장점을 정의하면 현시점에서 SAVEPOINT까지 트랜잭션 일부만 변경 가능

 

ORACLE

SQL server

저장점 정할

SAVEPOINT SVPT1;

SAVE TRANSACTION SVTR1;

트랜잭션을 저장점 까지 실행할

ROLLBACK TO SVPT1;

ROLLBACK TRANSACTION SVTR1;


 

해당 테이블에 데이터의 변경 하는 INSERT, UPDATE, DELETE 수행시 데이터의 무결성을 보장하는 것이 COMMIT&ROLLBACK 의 목적

 

[Oracle의 트랜잭션]

자동 시작되고 COMMIT 또는 ROLLBACK을 실행한 시점에서 종료

단, 다음의 경우에는 COMMIT과 ROLLBACK을 실행하지 않아도 자동으로 트랜잭션이 종료된다.

  • DML 문장 이후에 커밋 없이 DDL 문장이 실행되면 DDL 수행 전에 자동으로 커밋된다.
  • 데이터베이스를 정상적으로 접속을 종료하면 자동으로 트랜잭션이 커밋된다.
  • 애플리케이션의 이상 종료로 데이터베이스와의 접속이 단절되었을 때는 트랜잭션이 자동으로 롤백된다.

 

[SQL Server의 트랜잭션]

DBMS가 트랜잭션을 컨트롤하는 방식인 AUTO COMMIT이 기본 방식

  • 애플리케이션의 이상 종료로 데이터베이스(인스턴스)와의 접속이 단절되었을 때는 트랜잭션이 자동으로 롤백된다.

'자격증 공방 > SQLD' 카테고리의 다른 글

제 3-6절 함수  (0) 2018.07.07
제 3-5절 WHERE 절  (0) 2018.07.07
제 3-3절 DML (DATA MANIPULATION LANGUAGE)  (0) 2018.07.07
제 3-2절 DDL  (0) 2018.07.07
제 3-1절 관계형 데이터베이스 개요  (0) 2018.07.07

+ Recent posts