Dbms
title: 2025-11-10 author: 강병호 date: 2025-11-10 category: TIL/강병호/2025/11 (파일 경로 : TIL/{이름}/{연}/{월}) layout: post (자유) —
모든 DBMS가 4개의 레벨을 모두 구현하고 있나요? 그렇지 않다면 그 이유는 무엇일까요?
- 모든 DBMS가 4개의 레벨을 모두 구현하지는 않음
- 표준이 “논리적 목표”만 정의하고 각 DBMS는 성능·일관성·설계 철학(MVCC vs Lock)·역사적 호환성에 맞게 다르게 구현
- 표준(ANSI SQL)에서는 어떤 현상을 허용/금지하라고만 규정, 구체적으로 어떻게 막을지는 DBMS가 선택(어떤 DBMS는 락 기반으로 막고 어떤 DBMS는 MVCC로 막음)
- 모든 레벨을 100% 엄밀하게 구현하려면 락 경합 증가, 대기, 교착상태, 로그와 메모리 부담이 커지기 때문에 “현실적인 수준”만 채택
- DBMS 별 트랜잭션 레벨
-
Oracle: 주로 READ COMMITTED와 SERIALIZABLE을 제공합니다.
(REPEATABLE READ 명시 레벨 없이도 MVCC로 유사 효과)
- PostgreSQL: **READ COMMITTED(스냅샷 기반), REPEATABLE READ(과거엔 의미가 달랐지만 현재는 강한 스냅샷), **SERIALIZABLE(SSI) 제공. READ UNCOMMITTED는 READ COMMITTED로 처리.
- MySQL(InnoDB): 4단계를 모두 노출하지만, REPEATABLE READ에서 넥스트키 락으로 팬텀을 대부분 차단하는 등 동작과 기대치가 독특합니다.
- SQL Server: 4단계 + SNAPSHOT ISOLATION(옵트인) 제공. 기본은 락 기반이지만 스냅샷을 켜면 MVCC도 사용.
-