Isolation 이 실제 제어하는 거
Isolation level 이 트랜잭션이 다른 트랜잭션의 in-progress 작업을 어떻게 보는지 결정. 더 엄격한 isolation = 강한 보장 + 더 많은 잠재 충돌. 더 느슨한 isolation = 더 좋은 동시성 + 이상한 중간 상태 볼 가능성 더.
네 가지 표준 레벨
| 레벨 | Dirty read | Non-repeatable read | Phantom read |
|---|---|---|---|
| READ UNCOMMITTED | 가능 (PG 엔 없음) | 가능 | 가능 |
| READ COMMITTED (PG default) | 없음 | 가능 | 가능 |
| REPEATABLE READ | 없음 | 없음 | 없음 (PG) |
| SERIALIZABLE | 없음 | 없음 | 없음 |
PostgreSQL 특이사항
PostgreSQL 에서 READ UNCOMMITTED 가 READ COMMITTED 와 동일하게 동작 — dirty read 없음. PostgreSQL 의 REPEATABLE READ 가 phantom read 방지 (실제로는 snapshot isolation). SERIALIZABLE 이 SSI 알고리즘으로 진정한 serializability 추가 — 잠재 직렬화 실패 비용으로, 앱에서 retry 해야.