isolation level 존재 이유
데이터의 일관성과 DBMS의 transaction 전체 처리량 사이에서 개발자가 직접 선택할 수 있도록 하기 위함이다
즉, DB 성능과 데이터 정확성 사이에서 개발자가 알아서 선택하도록 하기 위함이다
transaction의 isolation 속성이 완벽하게 동작한다면, 데이터 불일치는 발생하지 않겠지만 그만큼 DBMS에서 동시에 처리할 수 있는 transaction 수는 줄어든다.
그렇다고 isolation을 완벽하게 구현하지 않는다면, 동시에 처리할 수 있는 transaction의 수는 증가하겠지만 데이터 일관성이 깨질 수 있다
그래서 SQL 표준에서는 총 네 가지의 isolation level을 정의해서 개발자가 데이터 일관성과 DBMS의 성능 사이에서 적절하게 선택할 수 있도록 한다
참고로, 보통 대부분의 RDBMS에서 default isolation level은 read committed다
개발자가 주의해야 할 부분
1. 개발자는 각 isolation level 마다 어떤 이상 현상(phenomena)이 발생하거나 발생하지 않을 수 있는지 파악해야 한다
2. 동일한 isolation level이라도 RDBMS 마다 동작 방식이 다르고 발생 가능한 이상 현상의 종류도 조금씩 다를 수 있기 때문에 사용하는 RDBMS의 isolation level 관련 매뉴얼을 잘 숙지해야 한다
3. DBMS의 transaction 전체 처리량을 위해 일정 부분 데이터 불일치가 발생할 여지가 있는 level을 선택했다면, application을 구현할 때 서비스 레벨에서 잘 구현해 줘서, 해당 불일치가 발생하지 않도록 코드 레벨에서 보완해야 한다
쉬운코드는 본질에 충실합니다
👉 isolation level의 보다 자세한 영상을 보고 싶다면?!