[Read Uncommitted]
트랜잭션에서 처리(SELECT/INSERT/UPDATE/DELETE)중에 있는 아직 커밋되지 않은 데이터를 다른 트랜잭션이 읽는 것을 허용한다

 

[Read Committed]
트랜잭션들이 Commit된 데이터만 읽게 함으로써 Dirty Read를 막는다. Commit된 데이터만 읽더라도 읽는 시점에 따라 결과가 다를 수 있어서 Non-Repeatable Read와 Phantom Read 현상이 발생할 수 있다. 한 트랜잭션 내에서 쿼리를 두 번 수행할 경우, 두 쿼리 사이에서 다른 트랜잭션에 의해 해당 데이터가 UPDATE/DELETE되거나 새로운 데이터가 INSERT되는 일이 발생할 수 있다. 

 

[Repeatable Read]
트랜잭션 내에서 쿼리를 두 번 이상 수행할 경우, 첫 번째 쿼리 관련 데이터가 UPDATE/DELETE되어 그 다음번째 쿼리에서부터 변경된 값을 읽게 되는 현상을 막는다. 그렇지만 Phantom Read 현상이 발생할 수 있다. 한 트랜잭션 내에서 쿼리를 두 번 수행할 경우, 두 쿼리 사이에서 다른 트랜잭션에 의해 새로운 데이터가 INSERT되어 두 쿼리의 결과가 서로 달라질 수 있다.

 

[Serializable Read]
트랜잭션 내에서 쿼리를 두 번 이상 수행할 경우, 두 쿼리 사이에서 첫 번째 쿼리 관련 데이터가 UPDATE/DELETE 되거나 새로운 데이터가 INSERT 되는 현상을 막는다.

+ Recent posts