실무 포인트

DBMS는 매번 선행 그래프를 그리기보다, 위험한 실행 순서를 미리 제한해서 직렬 가능성을 지킨다.

핵심은 사후 검사보다 사전 통제입니다. 충돌이 생긴 뒤 그래프를 분석하는 대신, 처음부터 허용 가능한 순서만 통과시키는 동시성 제어 규칙을 둡니다.

왜 직접 검사하지 않을까

실시간 선행 그래프 검사는 비용이 크다

스케줄이 섞일 때마다 충돌 관계를 추적하고, 사이클 가능성까지 계속 확인해야 하기 때문입니다.

충돌이 생길 때마다 관계를 추가 읽기·쓰기 순서가 바뀔 때마다 간선이 늘어납니다.
문제가 생긴 뒤 판정 직렬 불가능 여부를 매번 계산해야 합니다.
대신 앞단에서 규칙을 둔다

동시성 제어 프로토콜이 위험한 섞임을 선별한다

2PL
락으로 충돌 접근을 기다리게 한다 같은 데이터를 동시에 뒤섞어 쓰지 못하게 순서를 고정합니다.
타임스탬프
정해진 시간 순서를 어기면 즉시 거절한다 나중에 끼어들어 선후 관계를 뒤집는 실행을 막습니다.
MVCC
버전을 나눠 읽기와 쓰기 충돌을 줄인다 읽기는 과거 버전을 보고, 실제 충돌 지점만 좁혀서 통제합니다.
공통 목표는 동일합니다. 방식은 달라도, 선행 그래프에 사이클이 생길 만한 실행 순서를 애초에 만들지 않게 하는 것입니다.
실제로 남는 실행

직렬 가능한 스케줄만 통과한다

그래프를 실시간으로 완성해 확인하지 않아도, 규칙을 통과한 실행만 남기면 결과적으로 직렬 가능성을 유지할 수 있습니다.

위험한 순서는 대기·중단·버전 분리 문제를 키우기 전에 입구에서 제어합니다.
운영 관점에서 더 현실적 일관성을 지키면서도 검사 비용을 매번 떠안지 않습니다.