트랜잭션 Flashcards

1
Q

트랜잭션

A

[정의] 커밋/롤백하기 전까지의 DB를 조작하기 위한 하나의 논리적 작업 단위를 이루는 연산의 집합
[특징] ACID (원자성, 일관성, 고립성, 영속성)
[상태전이] 실행, 부분완료, 완료, 실패, 철회, 종료
[보장기법]

<단일>
- Log 기록(트랜젝션 및 데이터 식별, 갱신 전/후 데이터 값 관리), Commit(DB 영구 저장), Rollback(실패시 변경 내역 폐기), Redo(장애로 인해 디스크에 기록되지 않는 커밋 트랜젝션 회복)
<멀티>
- 직렬화 검사(충돌 직렬화 검사, 우선순위 그래프), Locking(공유,전용), Timestamp(시스템 클락, 논리적 계수기), Snapshot(변경데이터 버전 관리, MVCC)
[회복기법] REDO, UNDO, Log, 체크포인트, 그림자 페이지
* 최근 확산 되는 MSA(Micro Service Architecture) 환경의 Polyglot 구조에 대한 트랜잭션 관리 이슈 고려 필요
[MSA 환경의 데이터베이스 트랜잭션 보장위한 고려사항]
- NoSQL,Message Broker 활용시 분산 트랜잭션 미지원 : SAGA 패턴 활용
- 이종DB사용,비동기 기반 IPC구조 활용에 따른 격리성 미지원 : 시멘틱 락,값 다시읽기 및 교환적 업데이트
* 분산 트랜잭션 설계 시 높은 동시성은 2PC(Two-Phase Commit), 높은 가용성은 SAGA 패턴을 활용
</멀티></단일>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

모놀리식 환경과 MSA환경의 트랜잭션 차이

A

[도입] 트랜잭션 정의
* 모놀리틱 환경의 단일 DB, 데이터 쿼리 중심의 트랜잭션 구조와는 달리 MSA 환경에서는 Polyglot 기반의 서비스 중심 트랜잭션 구조로 인해 관리 측면의 차이점 존재
[특성 차이점]
- 트랜잭션 보장 특성 : ACID 지원 / A(원자성), I(고립성) 미지원
- IPC 방식 : 동기 기반 IPC / 비동기 기반 IPC
- 주요 성능 목표 : 데이터 일관성 중심 / 서비스 가용성 중심
- 분산 트랜적션 일관성 보장 기법 : 2PC / SAGA 패턴 통해 보완
* MSA 환경의 경우 모놀리틱 환경과 달리 분산, 이종 DB 환경의 격리성 미지원으로 추가적인 격리성 보장 방안 고려 필요
[MSA 환경의 격리성 보장 방안]
- 시멘틱 락(Semantic Lock) : Application 수준의 Lock 통한 참조 제어 (생성시 Pending, 완료시 Approve 상태 값 관리)
- 값 다시 읽기(Reread Value) : 최신 정보 확인 통한 Lost Update 방지 (데이터 쓰기 전 변경 여부 확인)
- 교환적 업데이트(Commutative Update) : 업데이트의 교환적 설계 통한 Lost Update 방지(debit(), credit() 업데이트 및 rollback 상호 교환적 작업 구성)
* MSA 환경의 트랜잭션 설계시 높은 동시성 보장은 2PC, 낮은 가용성 중심 트랜잭션은 SAGA 패턴 활용 고려

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

트랜잭션 특징

A

[리드] 트랜잭션의 무결성 보장 기본 성질
[특징] ACID (원일고영) / 상태 / 보장 방안
1. 원자성(Atomicity) : 분해가 불가능한 최소 단위로써 수행(All or Nothing) / 회복성 보장 (커밋/롤백)
2. 일관성(Consistency) : 트랜잭션 수행후 모순이 없는 상태 / 동시성 제어 기법(무결성 제약 조건)
3. 고립성(Isolation) : 수행중 다른 트랜잭션의 간섭 방지 / 동시성 제어 기법 (Locking, Isolation Level)
4. 영속성(Durability) : 완료 후 DB 반영 보장 / 회복 기법 (ARIES)
* 트랜잭션은 ACID 특성을 기반으로 무결성과 직렬성, 회복성을 보장 받음
* 빅데이터 처리 위한 NoSQL은 분산 처리 성능에 중점을 두어 BASE특성을 활용
[차별화] ACID vs BASE
- (적용분야) : RDBMS / NoSQL, - (중점사항) : 무결성,일관성 / 성능, 가용성, - (일관성 측면) : 강한 일관성 / 약한 일관성 - (적용범위) 트랜잭션 / 시스템 전체

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

트랜잭션 상태전이

A

[상태전이]
- 활동 상태(Active) : 초기 상태, 실행 시작/실행 중 상태 (실행중)
- 부분 완료(Partial Committed) : 마지막 명령문이 실행된 이후 가지는 상태 (Commit 직전 상태)
- 완료(Committed) : 트랜잭션의 성공적인 완료후 Commit 수행 (Commit 종료, DB 저장)
- 실패(Failed) : 비정상적인 트랜잭션 종료 상태 (Rollback)
- 철회(Aborted) : 트랜잭션이 실패하여 실행되기 이전으로 복귀 (Restart, Kill)
* 트랜잭션이 정상적으로 상태 전이되어 작업 수행위해 ACID가 보장되어야 함

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

트랜잭션 격리수준

A

[정의] 병행성과 일관성 수준을 Lock Level 통해 정의한 고립성 유지 위해 데이터를 허용하는 독립성 수준
[특징] (고일(일관성) 저병(병행성))
- ANSI/ISO SQL Standard, ACID 보장, Locking 기반
* 고립성을 유지하기 위한 데이터를 허용하는 수준
[격리수준] ANSI/ISO SQL표준(SQL92) 설명 / 비일관성 현상
0 Read Uncommited : 커밋전 데이터 다른 트랜잭션이 읽는 것 허용 / Dirty Read
1 Read Commited : 커밋된 데이터만 읽기 허용 / Non-repeatable Read
2 Repeatable Read : 트랜잭션 종료시까지 후행 트랜잭션 갱신, 삭제 불가 / Phantom Read
3 Serializable : 선행 트랜잭션 Read 데이터 후행 트랜잭션 갱신, 삭제 불가. 중간삽입도 방어 / 완벽한 일관성
* 트랜잭션 격리 수준을 높이면 일관성은 향상, 더 넓은 범 위의 Lock을 오랫동안 유지해야 하므로 동시성 저하
* 다중 버전 동시성 제어(MVCC)지원 DBMS 활용시 데이터 일관성 및 높은 동시성 유지가능
[차별화] 일관성과 동시성 Trade Off 관계

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

트랜잭션 직렬성

A

[정의] 트랜잭션들을 병행 처리한 결과가 순차적(직렬적)으로 수행한 결과와 같아지는 성질
[직렬성 저해 요인] (더리노리 팬)
1. Dirty Read : T1이 갱신 → T2 Read → T1 Rollback
2. Non-repeatable Read : T1 Read → T2 동일행 갱신 → T1 Read(동일행 2번검색)
3. Phantom Read : T1 특정조건 행검색 → T2 동일조건 행삽입 → T1 검색시 존재하지 않았던 행 보게됨
[직렬성 보장 방안]
- Locking(Shared, Exclusive), 2PL, Timestamp Ordering, Validation(낙관), MVCC

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

dirty read

A

[정의] 변경 후 아직 Commit 되지 않은 값 읽고, Rollback 후의 값을 다시 읽어 최종 결과 값이 상이한 현상
[해결방안]
- 격리 수준을 Read Commited로 설정

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

phantom read

A

[정의] 충돌 없는 두 개 이상의 트랜잭션이 삽입/삭제되려고 하는 가상의 튜플에 의해 일관성 깨짐 현상
[영향]
- (읽기) : 다른 트랜잭션의 삽입으로 처음에 없던 튜플이 나타남
- (쓰기) : 다른 트랜잭션의 삭제 동작으로 처음 쓰기에 있는 튜플이 재실행시 사라짐
[해결방안]
- Locking 확대 : Locking의 단위를 투플이 아니라 릴레이션으로 확대
- Index Locking : Locking 규약을 index에 적용
- 격리 수준을 Serializable로 설정 : SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

[사례] T1 특정조건 행검색→T2 동일조건 행삽입→T1 동일 검색
- T1 트랜잭션내에 같은 쿼리를 두번할 경우 중간 T2에 의해 없던 레코드가 두번째 T1 수행 결과에 나나타는 현상

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

동시성 제어

A

[리드] 데이터베이스 무결성 확보 방안, 동시성 제어
[정의] 다중 사용자 환경에서 동시 트랜잭션들이 성공적으로 실행 될 수 있도록 지원하는 기법
[필요성] 트랙잭션 직렬성, 데이터 무결성/일관성 보장
[이상현상] (갱현모연) - 제어 없는 경우
1. 갱신 손실 (Lost Update) : 덮어쓰기, 후행 트랜잭션 overwrite, 선행 트랜잭션 갱신무효화
2. 현황파악 오류 (Dirty Read) : 중간값 읽기 참조오류
3. 모순성 (Inconsistency) : 두 트랜잭션 동일데이터 갱신후, 출력값 불일치, 일관성 훼손
4. 연쇄복귀 (Cascading Rollback) : Rollback, 특정 트랜잭션 실행취소 → 타 트랜잭션 처리부분 취소불가능
[제어기법]
- Locking : 공유Lock, Lock-S(상호배제, Shared Lock, 타 트랜잭션은 READ만 가능), 전용Lock, Lock-X(Exclusive Lock, 타 트랜잭션은 READ&WRITE 모두 불가)
- 2PL : 단계별 lock/unlock 확장, 수축. 직렬가능성 보장가능 규약
- Timestamp Ordering : System Clock, 논리적 계수기, 교착상태방지
- MVCC : SCN(Data 변경시점-쿼리수행), Rollback Segment(Data의 과거버전), CR Copy(Rollback Segment 제공하는 과거Data), Snapshot too old(문제점)
- 낙관적 검증(Validation) : Read / Validation / Execution Phase

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Locking

A

[리드] 상호 배제(Lock, Unlock) 기능 사용, Locking
[정의] 트랜잭션이 사용하는 자원(데이터 항목)에 대해 상호 배제(Mutual Exclusive) 기능을 제공하여 데이터의 무결성을 유지하는 기법
[종류]
1.공유(Shared) Lock : Read 만 가능, 다른 트랜잭션도 Read만 가능
2.전용(Exclusive) Lock : lock한 트랜잭션은 R/W 가능, 다른 트랜잭션은 R/W 불가
[Locking 단위와 동시성]
- (약한 동시성, 구현 간단) 데이터베이스 < 릴레이션(파일) < 튜플(레코드) < 속성(필드) (강한 동시성, 구현 복잡)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

2PL

A

[리드] 확장 및 수축 단계를 이용한 동시성 제어기법, 2PL
[정의] 트렌젝션의 직렬성 보장 위해 확장단계의 Lock 연산과, 수축단계의 Unlock 연산을 이용하는 동시성 제어 기법
[특징] read_lock(), write_lock(), unlock() 연산으로 구성
[동작]
- 확장 단계 : Lock 연산만 수행, 다른 트랜젝션으 변경을 금지
- 차단 단계 : 트랜젝션의 필요 연산 수행
- 수축 단계 : Unlock 연산만 수행, 다른 트랜젝션의 변경을 허용
[문제점] 교착상태(Deadlock) 발생 가능성
- 예방과 탐지로 해결, wait-die, wound-wait기법 적용
- 개선된 2PL 기법 적용 : Strict 2PL, Rigorous 2PL, Static 2PL
[활용] 휴대용 단말 플래시 메모리

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

타임스탬프 순서

A

[정의] 트랜잭션의 순서대로 유일한 식별자인 타임스탬프를 지정하여 동시성 제어의 기준 식별
[특징] 직렬성 보장, 교착상태 보장, 연쇄 복귀(Cascading Rollback) 초래
[구성요소]
- 타임 스탬프 : 시스템 시간값을 트랜젝션에 부여
- 논리 계수기 : 트랜젝션 직렬화 수행
- read_TS(X) : 판독 타임스템프 (read(x)중 가장 최근에 발행한 타임스탬프로 가장 큰 값)
- write_TS(X) : 기록 타임스템프 (write(x)중 가장 최근에 발행한 타임스탬프로 가장 큰 값)
[활용] Wait-Die, Wound-Wait

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

낙관적 검증

A

[정의] 트랜잭션 수행 동안 어떠한 검사도 하지 않고, 트랜잭션 종료시 일괄적으로 검사하는 제어 기법
[특징] 빠른 속도, 트랜잭션 철회 비용 큼
[처리단계] (판확기)
1. 판독 단계(Read phase) : Buffer(메모리)에서 수행
2. 확인 단계(Validation phase) : 일괄로 위반여부 확인
3. 기록 단계(Write phase) : 성공시 디스크 반영
[트랜잭션 유효성 검사]
- Start(Ti), Validation(Ti), Finish(Ti), 판독집합(Read Set), 기록집합(Write Set)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

MVCC

A

[정의] Locking없이 트랜잭션별 스냅샷 이미지의 유지/관리 통해 동시성을 보장하는 제어 기법
[특징] SCN 값 기준 Rollback Segment, Undo 영역 기반 동시성 관리
[구성요소]

<기준요소>
- Timestamp : 각 데이터 항목 버전 필드값 보유
- SCN(System Change Number) : Data, REDO, Control File 동기화 번호 (Data 변경시점-쿼리수행)
<제어요소>
- UNDO 영역 : 변경전 데이터는 Undo Segment 존재
- CR Copy : CR 블록 이용해 복사 (Rollback Segment 제공하는 과거Data)
- Rollback Segment : Data의 과거 버전
[문제점/해결방안]
- Undo 블록 I/O에 따른 오버 헤드 발생 : UNDO 크기 조정, 긴 트랜잭션 크기 조정
- Snapshot too old 오류 : 불필요한 Commit제한, 트랜젝션 튜닝, Undo 크기 조절
* UNDO 영역에 저장된 UNDO 정보가 다른 트랜잭션에 의해 재사용돼 필요한 CR Copy를 생성 불가시 Snapshot too old발생
</제어요소></기준요소>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

2PC

A

[정의] 복수의 컴퓨터에 분산 배치되어 있는 데이터베이스를 갱신할 때 커밋 처리(commit processing)를 Prepare 단계와 Commit 단계의 2 단계로 나누어 제어하는 커밋
[특징] 신뢰성 증가(둘이상 트랜잭션을 하나의 Tx로 처리), 오버헤드 증가(각 트랜잭션 처리완료 여부 확인 후 처리)
[절차] 조정자→참여자
1. Prepare 단계 : Prepare to Commit. Reply
2. Commit 단계 : Commit/Rollback, Reply
[구성요소]
- 수행 측면 : 조정자(분산 트랜잭션 참여 참여자 목록), 지역노드( 지역 트랜잭션을 수행하는 서버)
- 절차 측면 : Prepare단계, Commit 단계
[비교] 2PC vs 2PL
- (개념) 분산 데이터베이스에서 동시성 제어 / 다중 트랜잭선에서 동시성 제어
- (보장) 원자성 / 직렬성
- (단계) Prepare,Commit / 확장,축소

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

SAGA 패턴

A

[정의] MSA 환경에서 복수의 서비스간 데이터 일관성 유지를 위해 보상 트랜잭션을 이용 각 서비스의 로컬 트랜잭션을 순차적으로 처리하는 패턴
* MSA 환경에서 분산 트랜잭션 없이 데이터 일관성을 유지하는 매커니즘
[유형]
1. 코레오그라피(이벤트 방식) 2. 오케스트레이션 (브로커 방식)
* 각 유형에 따라 실패시 해당 서비스로 보상 트랜잭션(Rollback) 수행
[구성요소]
1. 보상 가능 트랜잭션 : 보상 트랜잭션을 통해 Rollback을 지원
2. 피봇 트랜잭션 : SAGA의 진행 또는 중단 결정
3. 재시도 가능 트랜잭션 : Rollback 필요없이 완료 보장된 트랜잭션
4. 보상 트랜잭션 : 피봇 실패시 이전 단계 변경분을 Undo
[사례]
1. 주문 서비스 : 보상 트랜잭선(Rollback시 실행), 보상 가능 트랜잭션 ( 주문 데이터 임시 생성)
2. 결재승인 서비스 : 피봇 트랜잭션 (성공시 진행, 실패시 주문 데이터 롤백)
3. 주문 서비스 : 재시도 가능 트랜잭션 (확정 처리)
* MSA의 경우 분산, 이종 DB환경의 격리성 미지원으로 추가적인 격리성 보장 방안 필요

17
Q

SAGA 패턴 유형

A
  1. 코레오그라피 SAGA(Choreography)
    - 각 서비스마다 자신의 트랜잭션을 관리하는 공유 ID기반의 Pub/Sub 이벤트 구독 통신 방식
    - 진행 방식 : Event
    - (장) 구현 단순, (단) 서비스간 호출 흐름 관리 필요, 결합도 증가 위험성
  2. 오케스트레이터 SAGA(Orchestrator)
    - Orchestrator가 명령을 중계하는 브로커를 사용하여 처리
    - 진행 방식 : Command
    - (장) 낮은 결합도, 쉬운 롤백 관리 (단) Orchestrator 관리 필요, 네트워크 홉 증가, 인프라 복잡도 증가
18
Q

데이터 회복기법

A

[정의] 데이터베이스 운영 중 예기치 못한 장애(Fault)가 발생하더라도 데이터 일관성을 유지할 수 있는 관리 기법
[장애유형] 트랜잭션 장애, 시스템 장애, 디스크 장애, 사용자 장애
[회복을 위한 주요요소] 데이터, Archive/Dump, Log/Jurnal, REDO, UNDO
[회복기법] (회로체크 A)
1. 로그 기반 : 즉시갱신(UNDO), 지연갱신(REDO)
2. Check Point : T1(회복제외), T2(REDO), T3(UNDO)
3. 그림자 페이지 : Disk에 변경전 페이지를 저장하고 장애 발생시 메모리의 원본 페이지를 대체
4. ARIES : WAL원칙, LSN, STEAL-Non FORCE 버퍼 관리 정책

19
Q

Redo

A

[리드] 재실행 회복 기법
[정의] 장애 발생 시 가장 최근 복제본 적재후 발생한 변경만 Log이용 재실행하는 DB 회복 기법
[특징]
- 데이터에 대해 일어나는 모든 변화를 기록한 REDO Log 이용
- 지연 갱신에 REDO 이용
- Redo log, Archive 로그 이용 회복
[회복방법] 시작 시점 Archive 사본 + 장애 시점까지의 Log
[문제점] Log File 용량제한 문제점 발생 / Log File을 Archive File로 별도 저장

20
Q

undo

A

[리드] 원상 복구 회복 기법
[정의] 장애 발생 시 데이터베이스에 대한 모든 변경사항에 대한 작업을 취소하여 일관성 유지 DB 회복 기법
[특징]
- 데이터베이스 갱신 내용을 UNDO 세그먼트에 저장하여 UNDO 수행 이용
- 즉시갱신에 UNDO 이용
- Log + Forward Recovery 이용 회복
[회복방법] 문제 발생 시점의 Log 와 DB + 취소 연산 수행 (Backward Recovery), Old Value로 환원
[문제점/해결방안] Snap shot too old 발생 / Retention Time 설정(ex, 800초)

21
Q

로그 기반 회복기법

A

[정의] DB 변경내역을 Log에 보관하고 데이터 장애 발생시 Redo, Undo를 수행하여 데이터를 회복하는 기법
[종류] 즉시갱신 기법, 지연갱신 기법

22
Q

즉시갱신기법

A

[리드] Write-Through
[정의] 트랜잭션 자료 갱신할때 로그에 결과를 기록하고 즉시 DB에 자료를 갱신 하는 방법
[특징] 미완료 갱신, REDO/UNDO 연산 모두 수행
[동작]
1. 정상 완료 : 트랜잭션 수행 결과 로그 기록, DB commit 동시 수행
2. 회복 처리 : 트랜잭션 실패시 로그기반 UNDO/REDO, 멀티환경에서 2PL기술 필요
3. 회복 구현 : 로그파일 참조 미완료는 UNDO, 완료 변경건 REDO 수행
[로그 레코드] 트랜잭션 ID, Data Item, 이전 데이터 & 이후 데이터

23
Q

지연갱신기법

A

[리드] Write-Back
[정의] 트랜잭션 중에는 모든 동작을 로그에 저장하고 완료시 로그 기반으로 DB자료 갱신 방법
[특징] 복구시 로그 파일만 폐기, 완료시 REDO만 시행
[동작]
1. 정상 완료 : 트랜잭션 수행시 우선 로그 기록, 종료시 로그기반 REDO
2. 회복 처리 : 트랜잭션 미종료시 로그 폐기, 멀티환경에서 2PL 기술 필요
3. 회복 구현 : 실패시 로그만 폐기 수행

24
Q

체크포인트

A

[정의] 로그파일에 체크포인트 시점에 DB에 기록하고 장애 발생시 검사점 이후에 처리된 내용을 Undo, Redo를 이용하여 회복하는 기법
[특징] 검사점에서만 로그 기록
[주요기능]
- Redo : Archive + Log 사용, Commit 복구
- Undo : Log + Backword Recovery, 취소 연산
* 체크포인트 활용 Log 크기 및 Redo 연산 처리비용 최소화

25
Q

그림자페이지

A

[정의] Disk에 변경 전 페이지를 저장하고 장애 발생시 메모리의 원본 페이지를 대체 회복하는 기법
[특징]
- 로그 사용 없어 낮은부하
- I/O 발생 트랜젝션 비용 증가
- 페이지테이블 관리필요, 높은 저장 공간 요구
[동작]
1. 원본 테이블 동일한 그림자 테이블 생성
2. 원본 테이블은 주 기억 장치, 그림자 페이지 테이블은 하드 디스크에 저장
3. 성공시, 원본 페이지 테이블 → 그림자 페이지 테이블
4. 실패시, 그림자 페이지 테이블 → 원본 테이블

26
Q

ARIES알고리즘 회복기법

A

[리드] 신속한 DB 복구, ARIES 회복 알고리즘
[정의] DB 장애 시 WAL(Write-Ahead Logging)을 통해 기록된 LSN(Log Sequence Number)을 이용하여 빠른 복구 수행하는 회복 기법
[특징] WAL정책(Steal, No-Force), Partial Rollback, 로그 순번 기록, 연산최소화, 물리-논리적 REDO연산
* 빠른 회복을 위해서 LSN 을 이용, 이미 적용된 로그 연산의 재수행을 피하고, 이미 로그에 기록된 정보의 양을 감소시켜, 빠른 복구 수행 가능
[구성요소]
- WAL : DB 변경 사항에 대한 전체 로깅 (로그 선행 기법)
- LSN : 모든 로그에 대한 고유 순서 번호 (로그 순서 번호)
- Log : 로그 레코드마다 LSN 할당 (write, commit, undo, 완료시점 기록)
- Trasaction Table : 진행중 트랜잭션 정보 (트랜잭션 식별자 상태, 최근 LSN)
- Dirty Page Table : 버퍼의 Dirty Page 정보 (페이지 식별자, 페이지 최근 LSN)
* WAL정책(Write Ahead Logging) 데이터파일의 변경 전 REDO, UNDO 정보를 로그테이블에 저장 기법
[단계]
1. 분석 단계 : Crash까지 로그 분석, UNDO 되어야 하는 트랜잭션 결정, 어떤 페이지가 Dirty Page인지 판단
2. REDO 단계 : History 반복을 통해 REDO 수행, 장애 전 데이터베이스 상태로 회복
3. UNDO 단계 : 장애 시 미완료된 모든 트랜잭션 롤백