MVCC 관점

읽기 자체보다 락이 필요한 순간이 성능 차이를 만듭니다

격리 수준이 올라가면 처리량은 내려가지만, MVCC에서는 일반 조회가 스냅샷 읽기로 수행되므로 READ COMMITTED와 REPEATABLE READ의 차이가 항상 크게 벌어지지는 않습니다.

공통 전제
일반 SELECT는 RC와 RR 모두 대부분 잠금 없이 스냅샷을 읽습니다. 그래서 실무에서 체감 차이는 "조회 그 자체"보다 SELECT ... FOR UPDATE 같은 Locking Read와 쓰기 충돌, 특히 Gap Lock 경합에서 드러납니다.
처리량 높음 / 락 개입 적음 일관성 강함 / 충돌 억제 강함
READ UNCOMMITTED 가장 가볍지만 Dirty Read까지 허용
READ COMMITTED 일반적인 기본값, 실무 균형점
REPEATABLE READ 같은 트랜잭션의 조회 기준을 더 오래 유지
SERIALIZABLE 가장 엄격하고 대기·재시도 비용이 큼
차이가 커지는 지점
RC
READ COMMITTED

현재 커밋된 버전을 기준으로 읽음

RR
REPEATABLE READ

트랜잭션 안에서 더 안정적인 조회 기준 유지

최상위
SERIALIZABLE

충돌 감시와 대기 비용이 가장 큼

일반 SELECT MVCC 스냅샷 읽기
차이 작음

읽기 자체는 잠금 경합이 적어 처리량이 잘 나옵니다.

차이 작음

읽기는 비슷하지만 더 오래 같은 조회 기준을 유지합니다.

비용 증가 가능

읽기 직렬화 제약 때문에 대기나 재시도가 늘 수 있습니다.

Locking Read / 쓰기 FOR UPDATE, 갱신, 범위 충돌
경합이 비교적 덜함

락을 잡더라도 범위 제약이 덜해 체감 비용이 완만합니다.

여기서 차이 확대

Gap Lock 같은 범위 락 경합 때문에 쓰기와 Locking Read 비용이 올라갈 수 있습니다.

가장 무거움

충돌 억제가 가장 강한 대신 처리량 저하가 가장 크게 나타납니다.

읽는 법: MVCC 환경에서는 RC와 RR을 "일반 조회 속도 차이"로 보기보다, 락이 필요한 읽기와 쓰기에서 경합이 얼마나 늘어나는지로 비교하는 편이 더 정확합니다.