Database

[Oracle Database] 9. 트랜잭션에 대해 알아보자

myeongju 2024. 7. 14. 19:05
반응형

트랜잭션이란 ?

일련의 연산 집합. DB 시스템에서 하나의 논리적 기능을 수행하기 위한 작업의 단위이다.

 

계좌이체를 하는 상황을 떠올려보자.

계좌이체 라는 행위는 인출입금 두 과정으로 이루어진다. 이 두 과정은 동시에 성공하던지 동시에 실패해야 한다.

이 과정을 묶는 방법을 트랜잭션이다.

 

트랜잭션의 특징 (ACID)

  1. 원자성
    • 더이상 나누어 질 수 없는 작업단위(All or Nothing)
  2. 일관성
    • 트랜잭션 실행 전과 후에도 항상 일관성을 유지해야 함.
      (정상적으로 실행 된다면)
  3. 격리성
    • 실행 중 연산의 중간 결과를 다른 트랜잭션이 접근 불가능
  4. 영속성
    • 트랜잭션이 성공적으로 실행되면 그 결과는 영속적.
      앞으로 날라가면 X. 영원히 유지되어야 함

 

TCL이란?

트랜잭션을 제어하기 위해 사용하는 명령어

 

TCL의 상태

  1. 모든 명령어가 정상적으로 수행 완료된 상태
  2. 모든 명령어가 수행되지 않아 취소된 상태

 

트랜잭션을 취소하고 싶을 땐 ?

모든 작업의 수행을 취소하고 싶다면 ROLLBACK 명령어를 사용한다.

 

ROLLBACK 이란 ?

트랜잭션의 처리 과정에서 발생한 변경사항을 취소하는 명령어

명령어를 사용하면 트랜잭션은 시작되기 이전의 상태로 되돌아간다.

 

즉, 마지막 Commit을 완료한 시점으로 돌아간다

ROLLBACK;

 

트랜잭션을 영구적으로 반영하고 싶을 땐 ?

COMMIT 명령어를 사용한다.

 

COMMIT이란?

트랜잭션을 완료했다고 기록하는 것

 

특징

  • 트랜잭션의 성공적인 실행을 보장 → 일관성 있는 DB 상태 유지 의미
  • 영구적인 갱신
  • 갱신된 데이터의 영속성 보장

 

ROLLBACK을 통해 작업을 취소할 지점을 지정하고 싶을 땐 ?

SAVEPOINT명령어를 사용한다.

 

 

세션과 읽기 일관성

세션이란 ?

어떤 활동을 위한 시간이나 기간

 

오라클 데이터베이스에서의 세션이란 ?

데이터베이스 접속을 시작으로 여러 데이터 베이스에서 관련 작업을 수행한 후 접속을 종료하기 까지의 전체 기간

 

읽기 일관성?

어떤 특정 세션에서 테이블의 데이터를 변경 중일 때, 그 외 다른 세션에서는 데이터의 변경이 확정되기 전까지 변경 사항을 알 필요가 없다.

데이터를 변경 중인 세션을 제외한 나머지 세션에서는 현재 진행 중인 변경과 무관한 본래의 데이터를 보여 준다.

 

LOCK

조작 중인 데이터를 다른 세션은 조작할 수 없도록 접근을 보류시키는 것

 

특징

  • 데이터 객체의 비공유, 비중첩 (내가 쓰고 싶은 데이터는 잠궈서 쓰겠다)
  • 원자성, 격리성 보장
  • 단일 소유자
  • 로크한 트랜잭션만이 로크를 해제

 

LOCK 종류

행 레벨 록

: SQL문으로 조작하는 대상 데이터가 테이블의 특정 행 데이터일 경우, 해당 행만 LOCK 이 발생

 

테이블 레벨 록

테이블에 변경되는 행의 수와는 상관없이, 데이터 조작 명령어(INSERT, DELETE, UPDATE, SELECT)를 사용하여 데이터가 변경 중인 테이블은 테이블 단위 LOCK

 

반응형