❓ Isolation Level 이란?
❓ Lock 이란 ?
⭐ Isolation Level 과 Lock 을 연관지어서 본다면 ?
가장 낮은 격리 수준으로, 다른 트랙잭션의 커밋되지 않은 변경 사항을 볼 수 있다.
변경되고 있던 데이터와 RollBack으로 인해 돌아간 변경 전 데이터의 불일치 현상이 발생할 수 있다.
Drity Read 문제가 발생할 수 있다.
성능은 빠르지만, 데이터 일관성이 낮을 수 있다.
Transaction A가 특정 컬럼 데이터를 변경하고 있는 중에
Transaction B가 Read하면 Transaction A는 변경하기 전 데이터를 읽어온다.
❓ Dirty Read 란 ?
Read Committed
다른 Transaction의 커밋된 변경 사항만 읽을 수 있다.
일반적으로 읽기 작업 중에만 공유 잠금 (Shared Lock)이 유지된다.
Non-Repeatable Read 문제가 발생할 수 있다.
Transaction A가 특정 컬럼 데이터를 변경하고 있는 중에
Transaction B가 Read하면 Transaction A는 변경하기 전 데이터(이전 커밋)를 읽어온다.
❓ Non-Repeatable Read 란 ?
Transaction 시작 후, 다른 Transaction에서 반복적인 조회 작업에서 데이터가 변경되는 경우 조회 시 데이터가 일치하지 않는 문제가 발생하는 현상
읽기가 완료되어도 공유 잠금 (Shared Lock)이 유지된다.
공유 잠금 (Shared Lock)으로 인해 데이터를 수정하는 것은 불가능하지만, 삽입하는 것은 가능한 상태.
Phantom Read 문제가 발생할 수 있다.
Transaction 내에서 다른 Transaction이 데이터를 변경 및 커밋하더라도,
Transaction 시작 시점의 데이터를 보여준다.
❓ Phantom Read 란 ?
하나의 Transaction 에서 동일한 쿼리를 2번 수행했을 때, 첫 번째 쿼리에서 없던 데이터가 두 번째 쿼리에서 나타나는 현상
Serializable ( 시리얼라이제블… 참 읽기 어렵네… )
❓ 트레이드오프 란 ?
⭐ 최종 정리 ⭐
레벨 | Dirty Read | Non-Repeatable Read | Phantom Read |
---|---|---|---|
Read Uncommitted | o | o | o |
Read Committed | o | o | |
Repeatable Read | o | ||
Serializable Read |
⭐ 참고자료 ⭐