Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

데이터베이스 트랜잭션이란? 개념부터 동작 과정까지 한눈에 보기

데이터베이스 트랜잭션의 정의

트랜잭션(transaction)이란 데이터베이스에서 실행되는 일련의 명령어 묶음을 의미합니다. 트랜잭션을 구성하는 각 명령은 원자적(atomic)입니다. 즉, 하나의 명령을 더 작은 하위 명령으로 나눌 수 없습니다.

트랜잭션에 포함된 명령은 데이터베이스의 구조를 변경할 수도 있고, 변경하지 않을 수도 있습니다. 중요한 점은 트랜잭션이 요구하는 모든 변경 사항이 반드시 함께(전부 또는 전무) 적용되어야 한다는 것입니다. 만약 이 규칙이 지켜지지 않으면 시스템 오류, 정전 등 여러 이유로 인해 데이터가 손실될 위험이 있습니다.


트랜잭션의 간단한 예시

해리(Harry)가 샐리(Sally)의 계좌로 100루피를 송금하는 상황을 생각해 봅시다. 이 송금 작업은 하나의 트랜잭션으로 처리됩니다.

  1. 먼저 해리의 계좌 정보를 읽어온 뒤, 잔액에서 100루피를 차감합니다.
  2. 변경된 잔액을 해리의 계좌에 다시 저장합니다.
  3. 다음으로 샐리의 계좌 정보를 읽어온 뒤, 잔액에 100루피를 더합니다.
  4. 변경된 잔액을 샐리의 계좌에 다시 저장합니다.

그런데 실제로 데이터베이스에서 트랜잭션을 구현하는 일은 생각보다 복잡합니다. 위 예시에서 해리의 계좌에서 돈이 출금된 직후 시스템이 다운된다면 어떻게 될까요? 출금된 100루피는 샐리의 계좌에 입금되지 못한 채 사라지고, 샐리의 계좌는 결코 갱신되지 않습니다. 바로 이러한 문제를 방지하기 위해 트랜잭션은 원자성을 보장해야 합니다.

트랜잭션의 처리 과정

트랜잭션은 기본적으로 읽기(read) 연산과 쓰기(write) 연산의 집합으로 구성됩니다. 읽기 연산은 특정 객체의 현재 값을 가져오는 데 사용되고, 쓰기 연산은 계산 후 얻은 갱신된 값을 다시 저장하는 데 사용됩니다.

읽기(Read) 연산

데이터베이스 객체를 읽으려면 먼저 해당 객체를 디스크에서 메인 메모리로 불러와야 합니다. 그다음 객체의 값을 필요한 변수에 복사하여 사용합니다.

데이터베이스 트랜잭션이란? 개념부터 동작 과정까지 한눈에 보기

쓰기(Write) 연산

데이터베이스 객체에 값을 쓰려면 메모리에 있는 값을 저장한 뒤, 해당 값을 다시 디스크에 기록해야 합니다. 이렇게 함으로써 변경된 데이터가 영구적으로 저장됩니다.

데이터베이스 트랜잭션이란? 개념부터 동작 과정까지 한눈에 보기