Transaction

BIGGY_MOM·2024년 9월 19일

Transaction(트랜잭션)

더이상 분할이 불가능한 업무처리의 단위.
하나의 작업을 위해 더이상 분할될 수 없는 명령들의 모음,
즉, 한꺼번에 수행되어야 할 일련의 연산모음

용도

데이터베이스와 어플리케이션의 데이터 거래(Transaction)에 있어서 안전성을 확보하기 위한 방법.

따라서 데이터베이스에서 테이블의 데이터를 읽어온 후 다른 테이블에 데이터를 입력하거나 갱신, 삭제하는 도중에 오류가 발생하면, 결과를 재반영하는 것이 아니라
모든 작업을 원상태로 복구하고, 처리 과정이 모두 성공하였을 때만 그 결과를 반영한다.

Transaction의 특징

  1. 원자성 (Atomicity)
    • 트랜잭션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 함.
    • 사람이 설계한 논리적인 작업 단위임
  2. 일관성 (Consistency)
    • 트랜잭션이 진행되는 동안에 데이터베이스가 변경되더라도 업데이트 된 데이터베이스로 진행되는 것이 아니라, 처음에 트랜잭션을 진행하기 위해 창조한 데이터베이스로 진행함.
  3. 독립성 (Isolation)
    • 둘 이상의 트랜잭션이 동시에 실행되고 있을 경우, 어떤 하나의 트랜잭션이 다른 트랜잭션의 연산에 끼어들 수 없음.
  4. 영구성 (Durability)
    • 트랜잭션이 성공적으로 완료된 경우, 결과는 영구적으로 반영됨.

Transaction의 상태

  1. 활성 (Active) : 트랜잭션이 정상적으로 실행중인 상태
    2-1. 부분완료 (Partially Comitted) : 트랜잭션의 마지막까지는 실행되었고, commit 연산이 실행되기 직전
    2-2. 완료 (Committed) : 트랜잭션이 성공적으로 종료되어 commit 연산을 실행한 후
    3-1. 실패 (Failed) : 트랜잭션 실행에 오류가 발생하여 중단된 상태
    3-2. 철회 (Aborted) : 트랜잭션이 비정상적으로 종료되어 Rollback 연산을 실행한 상태.

Commit : 모든 작업들을 정상 처리 하겠다고 확정하는 명령어
		해당 처리 과정을 DB에 영구저장하겠다는 의미
        즉, 이전 데이터가 완전히 UPDATE됨
Rollback : 작업 중 문제가 발생되어 트랜잭션의 처리 과정에서 발생한 변경사항을 취소하는 명령어
		트랜잭션은 시작되기 이전의 상태로 되돌아감
        즉, 마지막 commit을 완료한 시점으로 돌아감

MYSQL의 Transaction

MySQL에서 트랜잭션은 데이터베이스의 상태를 바꾸는 일종의 작업 단위이다.
MySQL에 입력하는 모든 쿼리 명령어들은 사실 각각 하나의 트랜잭션이라고 할 수 있다.
그렇지만 이 명령어 하나가 작업단위란 말은 아니다.
명령어 다수의 조합이 하나의 트랜잭션이라고 할 수도 있다.

MySQL에서는 디폴트로 auto commit이 on으로 설정되어있다.
명령어 한번 (=세미콜론 한번) 찍을 때마다 DB에서 자동으로 commit해주는 시스템.
바꿀수도 있다.

profile
고양이가 밟은 코드

0개의 댓글