DB ★Transaction

지식저장공간·2023년 5월 26일
0

DB

목록 보기
8/19
post-custom-banner

Transaction

트랜잭션의 의미

트랜잭션을 이해하기 쉬운 가장 쉬운 상황 : 계좌이체

J는 20만원이 차감되고 H한테는 20만원이 추가되어야한다.
그런데 만약 J는 20만원이 차감되고, H에게 20만원이 추가되어야하는 도중 에러가 발생했을 경우 어떻게 할까

두개의 쿼리가 모두 정상적으로 처리되어야 하는 논리적인 하나의 작업단위

★ 하나의 트랜잭션에 존재하는 SQL중 일부만 성공하거나, 1개만 실행이 실패한 경우 DB에 반영되는 일은 일어나지 않는다.

COMMIT, ROLLBACK

COMMIT

지금까지 작업한 내용을 DB에 영구적으로 저장하며, transaction을 종료한다.

ROLLBACK

지금까지 작업들을 모두 취소하고 transaction 이전 상태로 되돌린다.
transaction을 종료한다.

commit 후 rollback을 진행할 경우 transaction이 종료되었기 때문에 이전 작업으로 돌아가지 않는다.

Autocommit

on

off

Transaction을 시작한다 = Auto commit이 off된다.

정리

JAVA의 JDBC 예시

트랜잭션 ACID

트랜잭션의 특징 4가지 ACID : 원자성, 일관성, 고립성, 내구성

Atomicity

원자성 : 하나의 트랜잭션에서 모두 성공하거나 모두 실패하거나
논리적으로 쪼개질 수 없는 작업 단위

개발자는 언제 rollback을 할지, commit을 할지 정해야하고, commit과 rollback을 담당하는것은 DBMS이다.

Consistency

일관성 : 트랜잭션은 데이터베이스의 일관성을 유지해야한다.

Isolation

고립이 안지켜질 시

H의 계좌가 200만원인것을 확인하고 20만원을 추가하려는 순간 H의 통장에 더 먼저 30만원이 들어왔다. 때문에 230만원 +20만원 해야하지만, 200 + 200만원을 한다.

여러 트랜잭션들이 동시에 실행되어도 혼자 각각 실행되는것처럼해야한다.
하나의 트랜잭션은 다른 트랜잭션의 영향을 받거나 주면 안된다.

Durability

지속성 : commit된 transaction은 DB에 영구적으로 저장한다.

profile
발전하는 개발자가 꿈입니다. 지식을 쌓고 지식을 활용해 목표 달성을 추구합니다.
post-custom-banner

0개의 댓글