데이터베이스 트랜잭션, ACID

이다혜·2024년 1월 12일
0

영상후기

목록 보기
8/12

📌 Transaction

  • 단일한 논리적인 작업 단위
  • 논리적인 이유, 목적으로 여러 SQL문들을 단일 작업으로 묶어서 나눠질 수 없게 만드는 것이다.
  • Transaction 내부의 SQL문들 중에 일부만 성공해서 DB에 반영되는 일은 일어나지 않는다.

이체 예제

J의 계좌에서 H의 계좌로 20만원을 이체

start transaction

: DBMS에 트랜잭션의 시작을 알린다.

commit

: 지금까지 작업한 내용을 DB에 영구적으로 저장하고 트랜잭션을 종료한다.

rollback

: 지금까지 작업들을 모두 취소하고 transaction 이전 상태로 되돌리고 트랜잭션을 종료한다.

AUTOCOMMIT

  • 각각의 SQL문을 자동으로 트랜잭션 처리 해주는 개념
  • SQL문이 성공적으로 실행하면 자동으로 commit 한다.
  • 실행 중에 문제가 있었다면 알아서 rollback 한다.
  • MySQL에서는 enabled가 default이다.
  • start transaction 실행과 동시에 autocommit은 off 되고, commit/rollback과 함께 원래 상태로 돌아간다.

일반적인 transaction 사용 패턴

  1. transaction을 시작(bigin)한다.
  2. 데이터를 읽거나 쓰는 등의 SQL문들을 포함해서 로직을 수행한다.
  3. 일련의 과정들이 문제없이 동작했따면 transaction을 commit한다.
  4. 중간에 문제가 발생했다면 transcation을 rollback한다.

📌 ACID 속성

Atomicity(원자성)

  • All or Nothing
  • 트랜잭션 내부의 SQL문들이 모두 성공해야한다.
  • 중간에 실패하면 지금까지의 작업을 모두 취소하여 아무 일도 없었던 것처럼 rollback한다.

Consistency(일관성)

  • 트랜잭션은 DB 상태를 consistent 상태에서 또 다른 consistent 상태로 바꿔줘야 한다.
  • DB에 정의된 rules을 트랜잭션이 위반했다면 rollback해야한다.
  • 트랜잭션이 DB에 정의된 rule을 위반했는지는 DBMS가 commit 전에 확인하고 알려준다.

Isolation

  • 여러 트랜잭션들이 동시에 실행될 때에도 혼자 실행되는 것처럼 동작하게 만든다.
  • DBMS는 여러 종류의 isolation level을 제공한다.
  • 개발자는 isolation level 중에 어떤 level로 transaction을 동작시킬지 설정할 수 있다.
  • concurrency control의 주된 목표가 isolation

Durability(영존성)

  • commit된 트랜잭션은 DB에 영구적으로 저장된다.
  • 즉, DB 시스템에 문제가 생겨도 commit된 트랜잭션은 DB에 남아 있는다.
  • '영구적으로 저장한다'라고 할 때는 일반적으로 비휘발성 메모리(HDD, SSD,...)에 저장함을 의미한다.
  • 기본적으로 durability는 DBMS가 보장한다.

0개의 댓글