자격증/SQLD

SQLD 요약 - TCL

비뀨_ 2023. 2. 3. 00:47

원본

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