Learning
토픽 214 / 224·비교표

무결성, 트랜잭션, 병행제어

선언적 무결성 vs 절차적 무결성

항목선언적 무결성절차적 무결성
구현DDL 제약조건(PK, FK, CHECK)트리거, 프로시저
장점간단, 성능 우수유연, 복잡 규칙
단점복잡 규칙 표현 한계구현 복잡, 성능 부하

참조동작: CASCADE vs RESTRICT vs SET NULL

항목CASCADERESTRICTSET NULL
동작자식 연쇄 삭제/수정자식 존재 시 거부자식 FK를 NULL로
안전성위험(연쇄 삭제)안전(거부)중간(NULL 허용 시)
적합강한 종속 관계참조 보호선택적 관계

ACID vs BASE

항목ACIDBASE
적용RDBMSNoSQL/분산 시스템
일관성강한 일관성(즉시)최종 일관성(지연)
가용성트랜잭션 중 제한기본 가용성 우선
상태확정적(Committed)소프트 상태(변할 수 있음)
적합금융, 결제SNS, 이커머스 장바구니

격리수준: Read Uncommitted → Serializable

항목Read UncommittedRead CommittedRepeatable ReadSerializable
Dirty Read발생방지방지방지
Non-Repeatable발생발생방지방지
Phantom Read발생발생발생방지
동시성최대높음중간최저
기본 설정-Oracle, PGMySQL InnoDB-

Dirty Read vs Non-Repeatable Read vs Phantom Read

항목Dirty ReadNon-Repeatable ReadPhantom Read
원인미커밋 데이터 읽기UPDATE 커밋INSERT/DELETE 커밋
변화유령 데이터같은 행 값 변경행 수 변경
위험도가장 심각중간범위 쿼리 영향
방지 수준Read Committed 이상Repeatable Read 이상Serializable

비관적 vs 낙관적 vs MVCC 동시성 제어

항목비관적(Pessimistic)낙관적(Optimistic)MVCC
가정충돌 빈번충돌 드묾-
잠금사전 잠금(Lock)잠금 없음, 사후 검증읽기 무잠금
충돌 처리차단(대기)커밋 시 롤백버전 관리
동시성낮음높음높음
적합쓰기 위주읽기 위주범용(현대 DBMS)

공유락 vs 배타락 vs 의도락

항목공유락(S-Lock)배타락(X-Lock)의도락(Intent Lock)
용도읽기 보호쓰기 보호테이블 수준 잠금 의도
다른 읽기허용차단계층적 잠금 관리
동시성높음낮음충돌 사전 감지

2PL 변형: Basic vs Strict vs Rigorous

항목Basic 2PLStrict 2PLRigorous 2PL
잠금 유지Growing/Shrinking배타락 완료까지 유지모든 잠금 완료까지 유지
연쇄 롤백가능방지방지
엄격도유연안전가장 엄격
동시성높음중간최저

MVCC vs Locking

항목MVCCLocking
읽기 잠금불필요(무잠금)공유락 필요
동시성높음낮음
공간증가(구 버전 유지)절약
정리가비지 컬렉션 필요불필요
대표PostgreSQL, Oracle전통적 RDBMS

Snapshot Isolation vs Serializable

항목Snapshot IsolationSerializable
읽기스냅샷 기반(무잠금)잠금 또는 SSI
Write Skew허용(비직렬화)방지
성능높음(읽기 무블로킹)낮음(잠금/검증 오버헤드)
Phantom Read방지방지

교착상태 해결: 예방 vs 탐지 vs 타임아웃

항목예방(Prevention)탐지(Detection)타임아웃(Timeout)
방식접근 순서 고정Wait-for Graph 순환일정 시간 초과 시 롤백
시점사전 차단사후 처리사후 처리
오버헤드높음그래프 분석 비용간단
정확도높음높음낮음(오판 가능)

Wait-Die vs Wound-Wait

항목Wait-Die(비선점)Wound-Wait(선점)
Old→Young 요청대기(Wait)선점(Young 롤백)
Young→Old 요청죽음(자신 롤백)대기(Wait)
롤백 대상항상 Young항상 Young
특징Old이 기다림Old이 밀어냄

타임스탬프 vs 2PL vs MVCC vs 낙관적 제어

항목Timestamp Ordering2PLMVCC낙관적
잠금비잠금잠금 기반다버전비잠금
교착상태없음가능없음없음
충돌 처리롤백(빈번)대기/차단버전 관리사후 검증
적합읽기 위주범용범용읽기 위주

REDO vs UNDO

항목REDO(재실행)UNDO(취소)
대상커밋된 트랜잭션미완료 트랜잭션
방향Forward RecoveryBackward Recovery
저장After Image(변경 후 값)Before Image(변경 전 값)
용도장애 후 재적용롤백, MVCC 과거 버전

WAL vs Shadow Paging

항목WALShadow Paging
방식로그 선행 기록페이지 복사
I/O순차 I/O(빠름)랜덤 I/O(느림)
성능우수비효율
채택거의 모든 RDBMS레거시

전체 체크포인트 vs 퍼지 체크포인트

항목전체 체크포인트퍼지 체크포인트
방식모든 더티 페이지 일괄 플러시점진적 플러시
서비스일시 정지 발생운영 중 수행(무중단)
채택레거시현대 DBMS 표준

ARIES vs Shadow Paging vs 즉시갱신

항목ARIESShadow Paging즉시갱신
방식3단계(Analysis-Redo-Undo)페이지 복사로그 기반
기반WAL페이지 관리WAL
표준사실상 표준단순, 비효율단순

Wait-Die (비선점) vs Wound-Wait (선점)

구분Wait-Die (비선점)Wound-Wait (선점)
제안자Rosenkrantz et al. (1978)Rosenkrantz et al. (1978)
Old → Young 요청대기(Wait)선점(Wound) — Young을 롤백시킴
Young → Old 요청죽음(Die) — 자신이 롤백대기(Wait)
롤백 대상항상 Young 트랜잭션항상 Young 트랜잭션
특징비선점, Old이 기다림선점, Old이 밀어냄
재시작롤백된 Young이 동일 TS로 재시작롤백된 Young이 동일 TS로 재시작