데이터베이스 9-1 트랜잭션 개요

milkbottle·2022년 11월 29일
0

DB

목록 보기
10/13

트랜잭션

  • DB는 여러 사람들이 대규모로 동시 접근함
  • 동시성 제어: 동시에 접근 하는 상황에서 일어나는 문제를 없애야 함
  • 회복: DB를 사용하던 도중 맛이 가도 일관성을 유지해야 함
  • DB에서 하나의 논리적인 단위를 수행하는 DB 연산의 모임
  • 운영체제의 인스트럭션과 비슷한 느낌 공유 자원 보호참조

트랜잭션 개요

연산을 수행하다가 종료된 상황1

전체 사원의 봉급을 6% 인상하는 쿼리 수행

UPDATE EMPLOYEE
SET SALARY = SALARY * 1.06;

만약 1000명의 사원이 DB에 저장되어있는데 500명까지 수행하다가 비정상 종료가 된다면? 연산을 어디까지 했는지 로그를 저장

연산을 수행하다가 종료된 상황2

계좌 이체의 쿼리 수행

UPDATE CUSTOMER
SET BALANCE = BALANCE - 100000
WHERE CUST_NAME = '김철수';

UPDATE CUSTOMER
SET BALANCE = BALANCE + 100000
WHERE CUST_NAME = '이영희';

만약 첫 번째 UPDATE 구문이 수행된 후 두 번째 UPDATE 구문이 수행되기전 시스템이 다운된다면? 100000원 증발 운영체제의 Atomic Instruction처럼 보호

트랜잭션의 ACID 특성

원자성(Atomicity)

  • 연산이 완전히 수행되거나 전혀 수행되지 않음(all or nothing)
  • 완전히 수행되지 않은 상태에서 다운되었을 때, 이전 상태로 ROLLBACK
  • 완전히 수행된 상태면, COMMIT

일관성(Consistency)

  • 트랜잭션 수행 전이 일관된 상태라면 수행 후에도 일관된 상태를 가짐
  • 트랜잭션 수행 도중은 일시적으로 일관된 상태를 갖지 않을 수도 있음

고립성(Isolation)

  • 트랜잭션이 수행 중일 땐 다른 트랜잭션이 접근하지 못함
  • 여러 트랜잭션이 동시에 수행되더라도, 순서대로 실행한 결과와 같아야 함

지속성(Durability)

  • 트랜잭션이 완료되면 이 후 고장이 발생하더라도 손실되지 않음
  • 완료된 트랜잭션의 결과는 시스템이 다운되도 반영됨

완료와 철회

Commit

  • 트랜잭션에서 변경하려는 내용이 DB에 완전하게 반영됨
  • SQL 구문상으로 COMMIT WORK

Abort

  • 트랜잭션에서 변경하려는 내용이 DB에 일부만 반영된 경우 전 상태로 되돌림
  • SQL 구문상으로 ROLLBACK WORK

0개의 댓글

관련 채용 정보