공통 규칙
한 트랜잭션이 끝나기 전에는 다음 트랜잭션이 시작되지 않습니다.
연산이 서로 겹치지 않으므로 순서는 단순합니다. 대신 앞선 트랜잭션이 I/O를 기다리는 동안에도 뒤의 트랜잭션은 끼어들 수 없습니다.
시간축에서 보면: T1 전체 실행 후에야 T2가 시작
왼쪽에서 오른쪽으로 갈수록 시간이 흐릅니다.
T1
연산
I/O 대기
연산
COMMIT
종료
종료
T2
대기
대기
대기
대기
연산
이제 시작
핵심 병목은 T1의 대기 시간 전체가 곧 T2의 대기 시간이 된다는 점입니다. 직렬 스케줄은 안전하지만, 빈 시간을 다른 트랜잭션으로 메우지 못합니다.
왜 정확한가
트랜잭션 간 간섭이 없습니다.
읽기와 쓰기가 서로 교차하지 않으므로 결과는 항상 어떤 순차 실행의 결과와 같습니다.
왜 느린가
동시성이 0이라 처리량이 낮습니다.
CPU가 비는 순간에도 다른 트랜잭션을 못 돌리므로 자원 활용률이 떨어지고 전체 처리 시간이 길어집니다.