ScholarGate
어시스턴트

격리 수준

격리 수준은 트랜잭션이 다른 동시 트랜잭션의 영향으로부터 얼마나 보호되는지를 정의하며, 더 높은 동시성과 처리량을 위해 일부 격리 보장을 포기하는 절충점을 가집니다.

PaperMind(으)로 주제 찾기곧 제공Find papers & topics
Tools & resources
슬라이드 다운로드
Learn & explore
동영상곧 제공

Definition

격리 수준은 트랜잭션이 관찰할 수 있는 동시성 이상 현상(concurrency anomalies)을 명시한 것입니다. 높은 수준은 더 많은 이상 현상을 방지하지만(완전한 직렬화 가능성까지), 동시성이 감소하는 대가가 따릅니다. 반면 낮은 수준은 성능을 위해 특정 이상 현상을 허용합니다.

Scope

이 주제는 표준 격리 수준인 읽기 비확정(read uncommitted), 읽기 확정(read committed), 반복 가능한 읽기(repeatable read), 직렬화 가능(serializable)을 다룹니다. 이는 각 수준이 허용하거나 방지하는 현상(더티 읽기, 반복 불가능한 읽기, 팬텀 읽기)의 관점에서 정의되며, 허용되는 이상 현상(anomalies)의 관점에서 이를 재구성한 영향력 있는 비판과, 실질적으로 중요한 스냅샷 격리(snapshot isolation) 및 쓰기 스큐(write skew)와 같은 이상 현상도 포함합니다. 이는 일관성(consistency)과 동시성(concurrency) 사이의 절충점을 다루며, 이러한 수준을 구현하는 기본 잠금(locking) 및 다중 버전(multiversion) 메커니즘은 제외합니다.

Core questions

  • 각 격리 수준은 어떤 이상 현상(더티 읽기, 반복 불가능한 읽기, 팬텀 읽기)을 허용하는가?
  • SQL 표준은 네 가지 격리 수준을 어떻게 정의하는가?
  • 연구자들이 이상 현상 기반 정의를 모호하다고 비판한 이유는 무엇인가?
  • 스냅샷 격리는 어디에 해당하며, 어떤 이상 현상(예: 쓰기 스큐)을 허용할 수 있는가?
  • 애플리케이션은 주어진 워크로드에 대해 격리 수준을 어떻게 선택하는가?

Key concepts

  • 읽기 비확정
  • 읽기 확정
  • 반복 가능한 읽기
  • 직렬화 가능
  • 더티 읽기
  • 반복 불가능한 읽기
  • 팬텀 읽기
  • 스냅샷 격리 및 쓰기 스큐

Key theories

이상 현상 기반 격리 수준
SQL 표준은 더티 읽기, 반복 불가능한 읽기, 팬텀 읽기라는 세 가지 현상 중 어떤 것을 허용하는지에 따라 격리 수준을 정의합니다. 이는 읽기 비확정(모두 허용)부터 직렬화 가능(모두 불허)까지 다양합니다.
ANSI 격리 수준에 대한 비판
Berenson과 동료들은 표준의 현상 기반 정의가 모호하며 다중 버전 시스템을 명확하게 특징짓지 못한다는 것을 보여주었고, 원래 정의에 포착되지 않은 별개의 널리 구현된 수준인 스냅샷 격리를 도입했습니다.
스냅샷 격리 및 그 이상 현상
스냅샷 격리 하에서 각 트랜잭션은 시작 시점의 일관된 스냅샷을 읽으므로 읽기 잠금 없이 강력한 읽기 동작을 제공하지만, 쓰기 스큐와 같은 비직렬화 가능 이상 현상을 허용할 수 있어 직렬화 가능 스냅샷 격리의 동기가 됩니다.

Clinical relevance

격리 수준은 애플리케이션 개발자에게 일상적이지만 중요한 구성 선택입니다. 너무 약한 수준을 선택하면 미묘한 이상 현상을 통해 데이터가 조용히 손상될 수 있으며, 항상 직렬화 가능 수준을 사용하면 처리량이 저하될 수 있습니다. 따라서 올바르고 성능이 좋은 트랜잭션 애플리케이션을 위해서는 격리 수준에 대한 이해가 필수적입니다.

History

ANSI/ISO SQL 표준은 허용되는 현상(phenomena)의 관점에서 격리 수준을 정의했습니다. 1995년 Berenson, Bernstein, Gray, O'Neils의 비판은 이러한 정의의 모호성을 드러냈고, 주류 다중 버전 데이터베이스가 채택한 스냅샷 격리(snapshot isolation)를 특징지었습니다. 이후 연구는 남아있는 이상 현상 격차를 해소하기 위해 직렬화 가능 스냅샷 격리(serializable snapshot isolation)를 정의했습니다.

Debates

이상 현상에 의한 격리 정의 대 직렬화 가능성에 의한 정의
표준의 이상 현상 목록 정의는 설명하기 쉽지만 모호하며 다중 버전 시스템에 적합하지 않습니다. 대안은 직렬화 가능성을 통해 정확성을 직접 정의하는 것인데, 이는 더 명확하지만 개발자가 실제로 구성하는 수준에 매핑하기는 더 어렵습니다.

Key figures

  • Jim Gray
  • Philip Bernstein
  • Hal Berenson

Related topics

Seminal works

  • berenson1995
  • gray1992

Frequently asked questions

반복 불가능한 읽기(non-repeatable read)와 팬텀 읽기(phantom read)의 차이점은 무엇인가요?
반복 불가능한 읽기는 트랜잭션이 동일한 행을 두 번 읽고 그 사이에 다른 트랜잭션이 해당 행을 업데이트하여 다른 값을 보는 경우에 발생합니다. 팬텀 읽기는 트랜잭션이 검색 조건을 사용하여 쿼리를 다시 실행하고 다른 트랜잭션이 삽입한 새로운 행을 보는 경우에 발생합니다. 반복 가능한 읽기는 전자를 방지하지만, 직렬화 가능만이 팬텀을 확실하게 방지합니다.
스냅샷 격리(snapshot isolation)는 직렬화 가능(serializable)과 동일한가요?
아닙니다. 스냅샷 격리는 각 트랜잭션에 일관된 스냅샷을 제공하고 더티 읽기 및 반복 불가능한 읽기를 방지하지만, 완전히 직렬화 가능하지는 않습니다. 이는 두 트랜잭션이 겹치는 데이터를 읽고 함께 제약 조건을 위반하는 분리된 업데이트를 수행하는 쓰기 스큐(write-skew) 이상 현상을 허용할 수 있습니다. 직렬화 가능 스냅샷 격리는 이러한 이상 현상을 제거하기 위해 이를 확장합니다.

Methods for this concept

Related concepts