ScholarGate
어시스턴트

트랜잭션 관리 및 동시성

트랜잭션 관리 및 동시성 제어는 데이터베이스가 많은 동시 트랜잭션을 올바르게 실행하고 장애로부터 복구하여 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 영속성(Durability) (ACID) 속성을 보장하도록 합니다.

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

Definition

트랜잭션은 원자적이며, 일관성을 보존하고, 동시 트랜잭션으로부터 격리되며, 일단 커밋되면 영속적인 단일 논리적 단위로 실행되는 데이터베이스 작업의 시퀀스입니다. 트랜잭션 관리는 동시성 및 장애 상황에서 이러한 속성을 강제하는 메커니즘의 집합입니다.

Scope

이 영역은 작업 단위로서의 트랜잭션과 동시적이며 오류 발생 가능성이 있는 실행을 올바르게 만드는 메커니즘을 다룹니다: ACID 속성; 동시성을 위한 정확성 기준으로 직렬성(serializability); 이를 강제하는 잠금(locking), 타임스탬프(timestamp), 다중 버전(multiversion) 프로토콜; 성능을 위해 일관성을 희생하는 약한 격리 수준(weaker isolation levels); 충돌 시 원자성과 영속성을 보장하는 로깅(logging) 및 복구(recovery) 기술. 이는 여러 사이트에 걸친 분산 커밋(distributed commit)은 제외하며, 이는 분산 및 병렬 데이터베이스 영역에서 다루어집니다.

Sub-topics

Core questions

  • ACID 속성은 무엇을 보장하며 왜 필요한가?
  • 동시 스케줄을 올바르게, 즉 직렬 가능하게 만드는 것은 무엇인가?
  • 잠금, 타임스탬프, 다중 버전 프로토콜은 어떻게 직렬성을 강제하는가?
  • 로깅 및 복구는 충돌 후 일관된 상태를 어떻게 복원하는가?
  • 약한 격리 수준은 어떻게 일관성을 희생하여 동시성을 높이는가?

Key concepts

  • 트랜잭션 및 커밋/어보트
  • ACID 속성
  • 직렬성 및 선행 그래프
  • 2단계 잠금
  • 타임스탬프 순서 지정
  • 다중 버전 동시성 제어
  • 교착 상태 감지 및 방지
  • 선행 기록 로깅
  • 격리 수준

Key theories

ACID 속성
원자성(전부 아니면 전무 실행), 일관성(무결성 제약 조건 보존), 고립성(동시 트랜잭션이 단독으로 실행되는 것처럼 보임), 영속성(커밋된 효과가 장애 후에도 유지됨)은 함께 올바른 트랜잭션 동작을 정의합니다.
직렬성
동시 스케줄은 어떤 직렬 실행과 동등하다면 올바릅니다. 선행(직렬화) 그래프를 통해 테스트되는 충돌 직렬성(conflict serializability)은 동시성 제어 프로토콜이 강제하는 실질적인 기준입니다.
동시성 제어 및 복구
잠금, 타임스탬프 순서 지정, 다중 버전 방법은 비직렬 가능한 인터리빙을 방지하며, 선행 기록 로깅 및 복구 알고리즘은 올바른 트랜잭션 처리의 두 가지 핵심인 원자성과 영속성을 보장합니다.

Clinical relevance

트랜잭션 관리는 데이터베이스가 돈과 기록에 대해 신뢰할 수 있도록 만드는 핵심 요소입니다. 이는 은행 송금이 다른 계좌에 입금하지 않고 한 계좌에서만 출금되는 일이 없도록 하고, 항공사가 동시 요청 시 좌석을 이중 예약하는 일이 없도록 하며, 커밋된 데이터가 충돌 후에도 살아남도록 보장하여 모든 신뢰할 수 있는 트랜잭션 시스템의 기반이 됩니다.

History

트랜잭션 개념과 ACID 속성은 1970년대 IBM의 System R에서 공식화되었습니다. Eswaran과 동료들(1976)은 일관성 및 잠금 개념을 확립했고, Jim Gray는 트랜잭션과 복구를 정의했으며, Bernstein, Hadzilacos, Goodman (1987)은 직렬성 이론을 체계화했습니다. Gray의 트랜잭션 처리 기여는 그에게 튜링 상을 안겨주었습니다.

Key figures

  • Jim Gray
  • Philip Bernstein
  • Andreas Reuter

Related topics

Seminal works

  • gray1992
  • bernstein1987
  • eswaran1976

Frequently asked questions

트랜잭션 스케줄이 직렬 가능하다는 것은 무엇을 의미하는가?
동시 스케줄이 직렬 가능하다는 것은 전체 효과가 동일한 트랜잭션들을 어떤 순서로든 하나씩 실행하는 것과 동일하다는 것을 의미합니다. 직렬성은 황금 표준 정확성 기준입니다. 성능을 위해 트랜잭션들이 인터리빙되더라도, 결과는 마치 직렬로 실행된 것처럼 나타나므로 어떤 트랜잭션도 일관성 없는 중간 상태를 보지 않습니다.
이상 현상을 유발할 수 있는데도 약한 격리 수준이 허용되는 이유는 무엇인가?
완전한 직렬성을 강제하는 것은 잠금 경합 및 중단으로 인해 성능 비용이 발생합니다. 많은 애플리케이션은 더 높은 동시성을 얻기 위해 특정 이상 현상을 용인할 수 있으므로, SQL 표준은 개발자가 처리량을 위해 일부 격리성을 의도적으로 희생할 수 있도록 약한 격리 수준(읽기 커밋됨, 반복 가능한 읽기 등)을 정의합니다.

Methods for this concept

Related concepts