트랜잭션(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 |