트랜잭션

이유진·2022년 2월 21일
0

트랜잭션

  1. 트랜잭션(Transaction)이란?
    1) 정의

    데이터베이스의 상태를 변화(update, delete 등)시키는 기능을 수행하는 논리적인 작업 단위

    2) 특징
  • 트랜잭션 내에서 여러개의 SQL 명령어를 실행한다.
    (하나의 명령어만 실행하는 건 의미없다.)

  • 복수의 SQL 명령을 실행할 때 장애가 발생할경우, 세트 단위로 처리된다.
    (즉, 명령 전체 취소[Rollback]하거나, 전체 확정[Commit]하는 연산한다.)

  • MySQL의 트랜잭션

    • 자동커밋이 켜져있는 상태(: aotocommit 모드)
    • 기본 설정은 트랙잭션 미지원상태이다.

    3) 트랙잭션의 ACID 특성

    • 원자성(Atomicity)
    • 일관성(Consistency)
    • 격리성(Isolation)
    • 내구성(Durability)
  1. 트랜잭션 시작 : 자동커밋 비활성화하는 명령어

    • MySQL : START TRANSACTION
    • SQL Server, PostgreSQL : BEGIN TRANSACTION
    • Oracle, DBW : X
  • commit이나 rollback으로 트랙잭션을 종료할 때까지 자동 커밋이 비활성상태를 유지한다.
  1. 롤백(Rollback)

    ROLLBACK

  • 트랜잭션 사용하여 롤백을 사용할 경우, 모든 변경사항이 저장되지 않고 결과를 취소(되돌리는)하는 역할을 한다.
  • 에러가 발생한 경우, 변경사항이 적용되지 않는 목적으로 주로 사용한다.
  • 에러가 발생하지 않은 경우에도, 변경사항 적용되지 않는다.
  1. 커밋(Commit)

    COMMIT

  • 어떤 에러가 발생하지 않는다면, 변경사항을 적용 후 트랙잭션을 종료한다.
  1. savepoint 이름 / rollback to 이름
  • savepoint 이름 : 명명된 트랙잭션 저장지점 설정한다.
    • 같은 이름의 저장지점이 있는 경우, 새로운 저장지점으로 변경된다.
  • rollback to 이름 : 트랜잭션을 종료하지 않고, 트랜잭션을 명명된 저장점으로 롤백한다.

< 예시 >

  • 기본 데이터
  • 트랜잭션 시작

  • update 테이블명 set 열명 = value where 조건

: age열과 gender열의 값의 변경사항이 발생하였다.

  • Rollback 실행

: rollback을 실행한 결과, update로 변경한 사항이 적용되지 않았음을 확인할 수 있다.

  • commit 실행

: commit을 실행한 결과, update로 변경한 사항이 적용되었음을 확인할 수 있다.

  • savepoint point1 실행

: 'id=1'인 행의 데이터를 업데이트 한 후에, 'point1' 이름으로 savepoint 지점을 설정하였다.

  • rollback to point1 실행

: savepoint를 지정한 이후에 2개의 데이터를 수정한 후, 'point1' 지점으로 rolloback to 를 실행한 결과, point1 지점으로 rollback 되었음을 확인할 수 있다.

profile
차근차근 배워나가는 주니어 개발자

0개의 댓글