공유 규칙
다음 트랜잭션은 이전 트랜잭션이 COMMIT된 뒤에만 시작됩니다.
한 트랜잭션 전체 실행 읽기, 쓰기, 커밋까지 한 덩어리로 진행
여기서만
다음 시작 가능
다음 트랜잭션 실행 앞선 트랜잭션과 겹치지 않음

트랜잭션 내부 순서는 그대로 유지

R(A) → W(A) → R(B) → W(B) → COMMIT 같은 내부 연산 순서는 바뀌지 않고, 오직 트랜잭션 묶음의 순서만 달라집니다.

공유 데이터에 간섭이 생기지 않음

같은 A, B를 다루더라도 실행 구간이 겹치지 않으므로 충돌이 드러나지 않습니다. 그래서 결과는 항상 정확합니다.

T1, T2 두 개라면 가능한 직렬 순서

둘 다 같은 규칙을 지킵니다. 차이는 누가 먼저 전체 실행을 끝내느냐뿐입니다.

2!= 2개
S1 T1 → T2
T1 전체 실행 먼저 끝남
R(A) → W(A) → R(B) → W(B) → COMMIT
경계선 T1 커밋 후 T2 시작
T2 전체 실행 이후 시작
R(A) → W(A) → R(B) → W(B) → COMMIT
S2 T2 → T1
T2 전체 실행 먼저 끝남
R(A) → W(A) → R(B) → W(B) → COMMIT
경계선 T2 커밋 후 T1 시작
T1 전체 실행 이후 시작
R(A) → W(A) → R(B) → W(B) → COMMIT
왜 정확한가 겹치는 실행 구간이 없어서 간섭이 없다

직렬 스케줄은 항상 어떤 한 트랜잭션의 결과를 완전히 만든 뒤 다음 트랜잭션으로 넘어갑니다.

왜 느린가 동시성이 0이라서 대기 시간도 그대로 성능 손실이 된다

앞선 트랜잭션이 I/O를 기다리는 동안에도 뒤 트랜잭션은 시작할 수 없습니다. 트랜잭션이 n개면 가능한 직렬 순서는 n!개입니다.