SERIALIZABLE

SERIALIZABLE의 목표는 성공한 결과를 직렬 순서로 설명 가능하게 만드는 것이다

DBMS마다 구현은 다르지만, 공통 목표는 중요한 불변식을 지키기 위해 충돌을 기다리게 하거나 실패시키는 것이다.

성공 커밋 결과T1 → T2 또는 T2 → T1 중 하나의 순서로 설명 가능해야 한다

MySQL InnoDB

잠금 강화

범위 잠금과 대기가 늘 수 있다.

PostgreSQL

SSI

위험 의존성을 감지해 한쪽을 실패시킨다.

Oracle

Tx 일관성

트랜잭션 시점 읽기와 충돌 감지를 사용한다.

전제: serialization failure, deadlock, timeout은 정상 제어 흐름으로 보고 재시도한다.