sql

MYSQL - transaction문

yun.seul 2023. 1. 16. 21:13
트랜잭션(transaction)이란?

 

트랜잭션(transaction)은 하나의 작업을 위해 더이상 분할될 수 없는 명령들의 모음으로 즉, 한꺼번에 수행되어야 하는 일련의 연산 모음을 의미한다.

 

예를 들어 계좌이체 과정에서 인출과 입금을 한다고 했을 때 입금하는 연산수행에서 문제가 있어 계속 인출만 되고 입금이 안된다고 했을 때 치명적인 결과가 나타날 수 있다. 그래서 입금수행 문제가 있다면 인출과 입금이 둘 다 불가능하도록 만들어야 한다. 이 두 과정은 동시에 성공하던지 동시에 실패하던지 해야하는데 이 과정을 묶는 것이 트랜잭션(transaction)이다!

 

트랜잭션(transaction)은 데이터베이스와 어플리케이션의 데이터거래에 있어서 안정성을 확보할 수 있도록 한다. 데이터베이스에서 테이블에 데이터를 입력하거나 갱신, 삭제하는 도중에 오류가 발생한다면, 결과를 재반영 하는 것이 아니라 모든 작업을 원상태로 복구하고, 처리 과정이 모두 성공했을때만 그 결과를 반영한다.

 

-- 계좌 이체
-- 1번 계좌에서 = 5000 -> 2번 계좌에 +5000
start transaction;
begin;
	update account
	set money = money - 5000
	where id = 1;

	update account
	set money = money + 5000
	where id = 2;
commit;

위 예시를 보면 1번이 계좌이체하는 과정이다. 먼저 자기 계좌에서 5000원을 빼고 2번계좌에 5000을 넣어주는 과정으로 이 과정을 TRANSACTION으로 묶어 둘 과정이 성공한다면 COMMIT이 되도록 만들었다. 

 

START TRANSACTION ~ COMMIT안 블록들의 명령어들은 마치 하나의 명령어처럼 처리된다.

'sql' 카테고리의 다른 글

MYSQL - CASE WHEN문  (0) 2023.01.16
MYSQL - JOIN문  (0) 2023.01.16
MYSQL - 숫자/문자열/시간을 다루는 함수  (0) 2023.01.16
MYSQL - CAST/ CONVERT 데이터 형 변환  (0) 2023.01.13
MYSQL - UNION/GROUP BY/HAVING/DISTINCT  (0) 2023.01.12