데이터베이스 9-4 오라클의 트랜잭션

milkbottle·2022년 12월 7일
0

DB

목록 보기
13/13

PL/SQL의 트랜잭션

트랜잭션의 시작과 끝

  • COMMIT
    트랜잭션이 갱신한 내용을 데이터베이스에 모두 반영하고 트랜잭션을 완료

  • ROLLBACK
    트랜잭션이 갱신한 내용을 데이터베이스에서 모두 되돌리고 트랜잭션을 철회

  • SAVEPOINT
    트랜잭션 내에 저장점을 표시해서 트랜잭션을 더 작은 부분으로 나눔

  • ROLLBACK TO SAVEPOINT
    트랜잭션 내부의 저장점 이후에 갱신된 내용만 되돌림

-set autocommit on;을 통해 각 DML을 한 트랜잭션으로 처리

트랜잭션의 속성

SET TRANSACTION READ ONLY; 로 선언된 트랜잭션은 읽기 전용이므로, 갱신작업이 아래에 오는 것을 허용하지 않음

↑ 읽기 전용 DML이므로 사용 가능

↑ 갱신 전용 DML이므로 사용 불가능
SET TRANSACTION READ WRITE;로 선언시 읽기 쓰기가 가능

고립 수준

SET TRANSACTION READ WRITE
	ISOLATION LEVEL (고립 수준);
  • 다른 트랜잭션과의 영향을 얼마나 주는지의 척도
  • 낮을 수록 동시성↑ 데이터 정확성 ↓
  • 높을 수록 동시성↓ 데이터 정확성 ↑

READ UNCOMMITTED

  • 가장 낮은 고립 수준
  • 트랜잭션 내의 질의가 공유 로크를 걸지 않고 데이터를 읽음
  • 오손 데이터 읽기 발생
  • 갱신하려는 데이터에 대해서는 독점 로크를 걸고, 끝날 때까지 보유

READ COMMITTED

  • 트랜잭션 내의 질의들이 읽으려는 데이터에 공유 로크를 걸고, 읽기가 끝나자마자 로크를 해제함
  • 반복할 수 없는 읽기 발생
  • 갱신하려는 데이터에 대해서는 독점 로크를 걸고, 끝날 때까지 보유
  • PL/SQL에서의 디폴트

REPEATABLE READ

  • 질의에서 검색되는 데이터에 공유 로크를 걸고, 트랜잭션이 끝날 때까지 보유
  • 팬텀 문제 발생
  • 갱신하려는 데이터에 대해서는 독점 로크를 걸고, 끝날 때까지 보유

SERIALIZABLE

  • 가장 높은 고립 수준
  • 검색되는 데이터 뿐만 아니라 인덱스에 대해서도 공유 로크를 걸고, 트랜잭션이 끝날 때까지 보유
  • 갱신하려는 데이터에 대해서는 독점 로크를 걸고, 끝날 때까지 보유
  • SQL2에서의 디폴트

0개의 댓글

관련 채용 정보