원본
1. 트랜잭션의 개요
트랜잭션이란 DB의 논리적인 연산단위이다.
하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함된다.
트랜잭션은 분할할 수 없는 최소의 실행단위다.
그렇기 때문에 전부 적용되거나, 전부 취소된다.
말로하면 어렵기 때문에 그리면서 상상해보자.
다시 한 번 위의 설명을 실생활로 적용해보면 너무 유명한 예시인 ' 은행 입출금 '을 들 수 있다.
우리가 은행에 갔을 때 돈을 이체하려고 한다면
1. ATM기에서 이체를 선택한다
2. 받을 사람의 계좌번호를 입력하고, 보낼 금액을 적는다.
3. 비밀번호를 입력하고 돈이 송금된다.
의 순서로 되겠지만 3번을 조금 더 자세히보자.
- 비밀번호를 입력 후 내 계좌에서 돈이 인출하려고 할 때, 잔고가 보내는 금액보다 많다면 인출하고, 적다면 실패를 띄운다. .
- 내 계좌에서 돈이 빠져나간 후 받는 사람의 계좌에 돈이 입금된다.
위의 인출, 입금을 분리시켜서 생각할 수 있을까??
0원 이하로 돈이 떨어진다면 사고가 난 것이다! (마이너스 통장은 고려하지 않는다.)
그렇기 때문에 내 계좌에서 인출과, 다른 사람의 계좌에 입금이 동시에 한 묶음이 되어야한다.
이게 트랜잭션의 기본적인 원리다. 되려면 모두 되거나, 모두 되지 않거나
2. Commit (커밋 - 제출)
트랜잭션 안의 SQL 작업들이 이상이 없다면 Commit 명령을 통해서 트랜잭션을 완료 시킬 수 있다.
Commit / ROLLBack되기 전에는 Memory Buffer에만 영향을 받기 때문에 데이터를 이전 상태로 복구할 수 있다.
트랜잭션으로 변경된 Row는 잠금(Locking)이 걸려서 다른 사용자가 변경할 수 없다.
3. ROLLBACK (롤백 - 되돌리기)
Commit과 반대로 변경 사항에 대해 Rollback을 통해 취소할 수있다.
롤백은 데이터 변경 사항이 취소되어 데이터가 이전 상태로 복구되고, 잠금(Locking)이 풀려 다른 사용자들이 데이터 변경을 할 수 있게 된다.
4. SavePoint (저장점)
- 저장점을 정의하면 Rollback시 트랜잭션에 포함된 전체 작업을 되돌리는 것이 아니라,
현 시점 ~ 저장점 까지만 Rollback을 진행할 수 있다. - 복수의 SavePoint를 정의할 수 있다.
- 동일 이름으로 SavePoint를 정의한다면, 최근의 SavePoint로 설정된다.
'자격증 > SQLD' 카테고리의 다른 글
SQLD 요약 - DDL (0) | 2023.01.15 |
---|---|
SQLD 요약 - 관계형 데이터베이스 개요 (0) | 2023.01.14 |
SQLD 요약정리 - 식별자 (5) | 2022.12.19 |
SQLD 요약 정리 - 관계 (2) | 2022.11.14 |
SQLD 요약 정리 - 속성 (0) | 2022.11.03 |