2026/02/15 6

다중버전 동시성 제어(MVCC, Multi-Version Concurrency Control)

MVCC는 데이터베이스에서 다수의 사용자가 동시에 데이터에 접근할 때, 데이터의 일관성과 동시성을 모두 높이기 위해 사용하는 트랜잭션 제어 기법입니다. 기존의 잠금(Lock) 기반 방식이 가진 '읽기 작업과 쓰기 작업 간의 병목' 문제를 해결하기 위해 고안되었습니다.1. 핵심 원리: "읽기와 쓰기는 서로를 차단하지 않는다"기존의 락킹(Locking) 방식에서는 한 트랜잭션이 데이터를 수정(Write)하는 동안 다른 트랜잭션이 해당 데이터를 읽지(Read) 못하도록 대기해야 했습니다. 반면, MVCC는 데이터가 변경될 때 기존 데이터를 덮어쓰는 대신 새로운 버전(Version)의 데이터를 생성하여 동시성을 확보합니다.읽기 작업(Read): 트랜잭션이 시작된 시점(또는 쿼리 시작 시점)의 데이터 스냅샷(과거..

DB 2026.02.15

비연쇄적 스케줄(Cascadeless Schedule)

데이터베이스 트랜잭션 관리에서 비연쇄적 스케줄(Cascadeless Schedule)은 시스템의 장애나 오류 발생 시, 하나의 트랜잭션 취소(Abort)가 다른 트랜잭션들의 연쇄적인 취소로 이어지는 '연쇄 복귀(Cascading Rollback)' 현상을 방지하기 위해 고안된 스케줄링 방식입니다.1. 비연쇄적 스케줄의 핵심 원리비연쇄적 스케줄의 규칙은 매우 단순하면서도 강력합니다.원칙: 어떤 트랜잭션이 데이터를 읽을 때, 반드시 '이미 커밋(Commit)이 완료된' 트랜잭션이 기록(Write)한 데이터만 읽도록 허용합니다.즉, 아직 커밋되지 않은 중간 상태의 데이터(Dirty Data)를 다른 트랜잭션이 읽는 것(Dirty Read)을 원천적으로 차단합니다.2. 왜 비연쇄적 스케줄이 필요할까? (연쇄 복..

DB 2026.02.15

2PLP (2-Phase Locking Protocol)

2단계 잠금 규약은 다수의 트랜잭션이 동시에 실행될 때 데이터의 일관성을 유지하고, 여러 트랜잭션이 섞여서 실행되어도 순차적으로 실행된 것과 동일한 결과(직렬가능성)를 보장하기 위한 표준적인 기법입니다. 핵심 원칙은 "트랜잭션이 한 번 잠금을 해제하기 시작하면, 더 이상 새로운 잠금을 획득할 수 없다"는 것입니다.1. 2PL의 두 가지 단계이름에서 알 수 있듯이, 2PL은 트랜잭션의 실행을 잠금(Lock)과 해제(Unlock) 기준에 따라 명확히 두 단계로 분리합니다.확장 단계 (Growing Phase):트랜잭션이 데이터를 읽거나 쓰기 위해 필요한 잠금(Lock)을 계속해서 획득해 나가는 단계입니다.이 단계에서는 새로운 잠금을 얻을 수만 있고, 이미 확보한 잠금을 해제(Unlock)할 수는 없습니다.트..

DB 2026.02.15

낙관적 병행제어(Optimistic Concurrency Control, OCC)

낙관적 병행제어는 데이터베이스 환경에서 여러 트랜잭션이 동시에 실행될 때, 트랜잭션 간의 데이터 충돌이 거의 발생하지 않을 것이라고 '낙관적'으로 가정하는 동시성 제어 기법입니다. 데이터를 읽거나 수정할 때 자원에 미리 락(Lock)을 걸지 않고 자유롭게 연산을 수행한 뒤, 최종적으로 변경사항을 실제 데이터베이스에 반영(Commit)하기 직전에 충돌 여부를 검사하는 것이 핵심입니다.작동 원리 (3단계)낙관적 병행제어는 일반적으로 다음 세 가지 단계를 거쳐 트랜잭션을 처리합니다.1. 읽기 단계 (Read Phase): 트랜잭션이 실제 데이터베이스의 데이터가 아닌, 각자의 개인 작업 공간(Local Workspace)으로 데이터를 복사해 옵니다.모든 읽기와 쓰기 작업은 이 복사본을 대상으로만 이루어지며, 실..

DB 2026.02.15

데이터베이스 동시성제어

데이터베이스 동시성 제어(Concurrency Control) 과정에서 트랜잭션 간의 격리성(Isolation)이 완벽하게 보장되지 않을 때 발생하는 대표적인 4가지 이상 현상(Anomaly)이 있습니다. 각 현상의 발생 원리와 구체적인 예시를 시간 흐름(Time)에 따라 정리해 드립니다.1. 갱신 손실 (Lost Update)두 개 이상의 트랜잭션이 동시에 같은 데이터를 읽고 수정할 때, 먼저 수정한 결과가 나중에 수정한 결과에 의해 덮어씌워져 무효화되는 현상입니다.원리: 트랜잭션이 데이터를 읽은 후 업데이트를 반영하기 전에, 다른 트랜잭션이 동일한 과거 데이터를 기준으로 업데이트를 수행하여 덮어씁니다.예시: 계좌 잔액이 10,000원인 상황에서 T1이 5,000원을 입금하고, T2가 3,000원을 입..

DB 2026.02.15

[병행제어] 타임스탬프 순서 규약 (Timestamp Ordering Protocol)

타임스탬프 순서 규약(Timestamp Ordering Protocol)은 데이터베이스 관리 시스템(DBMS)에서 다중 트랜잭션이 동시에 실행될 때, 데이터의 일관성을 유지하고 직렬가능성(Serializability)을 보장하기 위해 사용하는 동시성 제어 기법 중 하나입니다. 락(Lock)을 사용하지 않고, 트랜잭션이 시작될 때 부여받은 고유한 시간표(Timestamp)를 기준으로 데이터 접근 순서를 미리 결정하여 충돌을 방지합니다.1. 핵심 개념 및 구성 요소각 트랜잭션과 데이터 항목은 타임스탬프 값을 가지며, 이를 비교하여 연산의 허용 여부를 결정합니다.TS(T_i): 트랜잭션 T_i가 시스템에 진입할 때 부여받는 타임스탬프. 숫자가 작을수록 먼저 시작된 오래된(Older) 트랜잭션을 의미합니다.RT..

DB 2026.02.15