ABOUT ME

-

Graduate of Computer Engineering at Inha University

https://github.com/juwon0605

devprofessionalism@gmail.com
  • 7.DB 트랜잭션(Transaction)
    Computer Science/Database 2022. 1. 7. 16:49

      ∙트랜잭션
       ∘데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위
                -데이터베이스의 상태 변화: SELECT, INSERT, DELETE, UPDATE
                -작업 단위 예시: 사용자 A가 사용자 B에게 만원을 송금한다.
                ➀사용자 A의 계좌에서 만원을 차감한다 : UPDATE 문을 사용해 사용자 A의 잔고를 변경
                ➁사용자 B의 계좌에 만원을 추가한다 : UPDATE 문을 사용해 사용자 B의 잔고를 변경
                현재 작업 단위 : 출금 UPDATE문 + 입금 UPDATE문
                이를 통틀어 하나의 트랜잭션이라고 한다.
                위 두 쿼리문 모두 성공적으로 완료되어야만 "하나의 작업(트랜잭션)"이 완료되는 것이다.
                ->Commit
                작업 단위에 속하는 쿼리 중 하나라도 실패하면 모든 쿼리문을 취소하고 이전 상태로 
                돌려놓는다.->Rollback
                -Commit: 하나의 트랜잭션이 성공적으로 끝나면 DB가 일관성 있는 상태일 때 이를 관리자에 
                                 알려주는 연산
                -Rollback:트랜잭션 처리가 비정상적으로 종료되어 원자성이 깨진 경우 최근 일관성 상태로 
                                 되돌아가는 작업
       ○트랜잭션의 특징
                ➀원자성: 트랜잭션이 DB에 모두 반영되거나 혹은 전혀 반영되지 않아야 된다.
                ➁일관성: 트랜잭션의 작업 처리 결과는 항상 일관성 있어야 한다.
                ➂독립성: 둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 때,
                              어떤 트랜잭션도 다른 트랜잭션에 끼어들 수 없다.
                ➃지속성: 트랜잭션이 성공적으로 완료되었으면 결과는 영구적으로 반영되어야 한다.
       ○DBMS의 구조
                ➀질의 처리기(Query Processor)
                ➁저장 시스템(Storage System): 고정 길이의 페이지 단위로 비휘발성 저장 장치인 디스크에 
                                                                   저장하거나 일시적으로 메인 메모리에서 임시 저장

                -페이지 버퍼: 저장 시스템 모듈 중 하나로 메인 메모리에 유지하는 페이지 관리 모듈이다.
                                     (임시 저장)
                -UNDO: 비정상적으로 종료된 트랜잭션을 원상 복구하는 작업
                -REDO: 이전 상태로 되돌아간 후, 실패가 발생하기 전까지의 과정을 그대로 따라가는 작업
                -check point: 트랜잭션이 성공적으로 수행돼서 디스크에 확실히 저장된 상태(되돌아갈 지점)
       ○UNDO와 REDO의 차이점
                -만약 실패가 발생하여 회복을 할 때 check point가 설정되어 있다면,
                 REDO는 check point 시점부터 log를 따라가면서 트랜잭션을 수행하지만,
                 UNDO는 log를 따라가지 않고 트랜잭션을 재수행 한다.

                ➀트랜잭션 T1: check point 이전에 실행이 완료되었으므로 failure 되더라도
                                   이미 디스크에 저장이 되어 회복을 하지 않는다.
                ➁트랜잭션 T2: check point 이전에 실행된 내용은 디스크에 반영이 되었으므로
                                   check point 이후의 내용을 log를 따라가는 redo를 수행한다.
                ➂트랜잭션 T3: failure 시점에 실행중이였으므로 check point 시점으로 undo한 후, 
                                        트랜잭션을 재실행한다.
                ➃트랜잭션 T4: check point 이후에 실행됐고 failure 시점 전에 실행이 끝났으므로 redo를 
                                        수행한다.
                ➄트랜잭션 T5: check point 이후에 실행됐고 failure 시점에 실행중이였으므로 시작지점
                                         까지 undo한 후, 트랜잭션을 재실행합니다.

     

    출처

    링크

    'Computer Science > Database' 카테고리의 다른 글

    DB 핵심 요약  (0) 2022.01.07
    9.Redis  (0) 2022.01.07
    8.트랜잭션(Transaction) 격리 수준(Isolation level)  (0) 2022.01.07
    6.Index  (0) 2022.01.07
    5.Anomaly(이상)  (0) 2022.01.07

    댓글

Designed by Tistory.