초보 개발자의 기록

트랜잭션(transaction) 본문

SQL/Basic

트랜잭션(transaction)

bambinodeveloper 2021. 9. 29. 22:13
728x90

트랜잭션(transaction)

데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위이다.

 

특성)

1. 원자성(Atomicity) 

     분해가 불가능한 작업의 최소단위

     연산 전체가 성공 또는 실패( All or nothing)

     하나라도 실패할 경우 전체가 취소되어야하는 특성

2. 일관성(Consistency)

     트랜잭션 성공 후 항상 일관된 데이터베이스 상태를 보존해야하는 특성

3. 격리성 / 고립성(Isolation) 

     트랜잭션 실행 중 생헝하는 연산의 중간 결과를 다른 트랜잭션이 접근 불가능

4. 영속성(Durability)

     성공이 완료된 트랜잭션의 결과는 영속적으로 데이베이스에 저장

 

상태)

활동 상태(Active) : 초기상태, 트랜잭션 실행 중

부분완료 상태(Patially Commited) : 마지막 명령문이 실행된 후

완료 상태(Commited) : 트랜잭션이 성공적으로 완료된 후 

실패 상태(Failed) : 정상적인 실행이 더 이상 불가능할 때

철회 상태(Aborted) : 트랜잭션이 취소되고 데이터베이스가 트랜잭션 시작 전 상태로 환원

 

제어)

트랜잭션 제어어 : TCL(Transaction Control Language) 

 

명령어

-COMMIT : 트랜잭션을 메모리에 영구적 저장

-ROLLBACK : 트랜잭션 내역을 저장 무효화

-CHECKPOINT / SAVEPOINT : ROLLBACK을 위한 시점을 지정하는 명령어

 

주요기법

원자성

     COMMIT/ROLLBACK

     회복성 보장


일관성

     무결성 제약조건

     동시성 제어 (병행제어)

 

병행제어(Concurrency Control)

다수 사용자 환경에서 여러 트랜잭션을 수행할 때, 데이터베이스 일관성 유지를 위해 상호작용을 제어하는 기법

 

목적

데이터베이스 공유 최대화

시스템 활용도 최대화

일관성 유지

사용자에대한 응답시간 최소화

 

미보장시 문제점

갱신손실 (Lost Update) : 선행 결과를 나중 트랜잭션이 덮어씀

현황파악오류 (Dirty Read) : 트랝개션 중간 수행 결과를 다른 트랜잭션이 참조

모순성 (Inconsistency) : 두 트랜잭션이 동시에 실행. 데이터 일관성 결여

연쇄복귀 (Cascading Rollback) :  복수의 트랜잭션이 데이터 공유시 특정 트랜잭션이 처리 취소할 경우,

                                           트랜잭션이 처리한 부분을 취소하지 못함

 

종류

로킹(Locking) : 트랜잭션의 순차적 진행을 보장하는 직렬화 기법

낙관적 검증 : 트랜잭션 종료 시 검증을 수행하여 데이터베이스에 반영하는 기법

타임스탬프 순서(Time Stamp Ordering) : 트랜잭션 시행 전 타임스탬프 부여해 부여된 시간에 따라 작업 수행

다중버전 동시성 제어(MVCC : Multi Version Concurrency Control) :

      트랜잭션 타임스탬프와 접근하려는 데이터의 타임스탬프 비교하여 직렬가능성이 보장되는 적절한 버전 선택하여          접근하도록하는 기법


격리성/ 고립성 (데이버 베이스의 고립화 수준) 

 

데이터베이스 고립화 수준(격리성 주요기법)

다른 트랜잭션이 현재의 데이터에 대한 무결성을 해치지 않기 위해 잠금을 설정하는 정도

     Read Uncommited :한트랜잭션에서 연산중 데이터를 다른트랜잭션이 읽는 것 허용. 연상중인 데이터 연산 불가능

     Read Commited :한트랜잭션에서 연산을 수행할 때, 연산이 완료될 때까지 연산대상 데이터 읽기 제한. 완료 후 가능

     Repeatable Read : 선행 트랜잭션이 특정 데이터 읽을 때, 트랜잭션 종료시까지 해당 데이터 갱신/ 삭제 불가

     Serializable :선행 트랜잭션이 특정 데이터 영역을 순차적으로 읽을 때, 해당 데이터 영역 전체에 대한 접근 제한


영속성

    회복기법

 

회복기법 (Recovery)

트랜잭션을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업

 

로그기반 회복기법

   - 지연갱신 회복기법(Deferred Update) : 트랜잭션이 완료되기 전까지 데이터베이스에 기록하지 않는 기법

   - 즉각갱신 회복기법(Immediate Update) : 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영

체크포인트 회복기법 (Checkpoint Recovery) :

     장애 발생 시 검사점 이루에 처리된 트랜잭션에 대해서만 장애 발생 이전의 상태로 복원시키는 회복기법

그림자 페이징 회복기법( Shadow Paging Recovery) 

     데이터베이스 트랜잭션 수행시 복제본을 생성하여 데이터베이스 장애 시 이를 이용해 복구하는 기법

 

 

 

 

 

 

 

728x90
반응형

'SQL > Basic' 카테고리의 다른 글

RDBMS vs. NoSQL  (0) 2022.10.01
DBMS 와 SQL  (0) 2021.08.31
데이터베이스와 테이블  (0) 2021.08.31