READ UNCOMMIT

- 다른 트랜젝션에서 아직 커밋 되지 않은 데이터를 읽어 올수 있는 level

- commit 되지 않아도 읽어 올 수 있기에 읽어 오고 난 뒤에 rollback 되서 읽어 온 값이 아무런 의미 없는 값이 될 수도 있다.

- 전체적으로 읽어온 데이터의 신뢰성이 낮다(낮다라는 의미는 신뢰 할수 없음이고 신뢰 할수 없다면 신뢰도가 0과 마찬가지다)

- 한 트랜젝션 내에서 동일한 select query의 결과가 다를 수 있다(select 하는 중에 해당 데이터가 변경 될수도 있다)

이전에 없던 row가 생겼거나 없어 졌을 수도 있다.

 

READ COMMITED

- 다른 트랜젝션에서 커밋된 데이터만 읽어 올수 있는 level

- 같은 트랜젝션에서 동일한 select query를 실행 한다고 하더라도 그 사이 다른 트랜젝션에서 commit이 발생 할 수 있으므로 동일 트랜젝션 같은 select query라도 결과가 다를 수 있다.

- 이전에 없던 row가 생겼거나 없어 졌을 수도 있다.

- select query 시 테이블 lock을 잡지 않고 매 select query 마다 snapshot을 구축하여 데이터를 읽어 온다

 

REPEATABLE READ

- 다른 트랜젝션에서 커밋된 데이터만 읽어 올수 있음

- 한 트랜젝션 내에서 동일한  select query의 결과가 같음

- 이전의 select query에 없던 row가 생기지 않는다

- select query 시에 테이블 lock을 잡지 않고 트랜젝션 시작시 구축한 snapshot에서 데이터를 읽어 온다
- 테이블 lock을 잡지 않았기에 select 결과는 같더라도 다른 트랜젝션에서 update, insert 한 것에 대해서는 영향을 받는다.

 

SERIALIZABLE

- 데이터 consistancy 100%

- 매 쿼리 마다 table, row lock 다 잡음

 

https://cecil1018.wordpress.com/2016/06/09/mysql-isolation-level/ 

 

MySQL Isolation level

MySQL은 innodb는  트랜잭션을 지원하며, 다양한 비즈니스 로직을 지원하기 위해 많이 사용되는 4가지 격리(isolation) 레벨을 지원한다. READ UNCOMMITTED 가장 낮은 수준의 격리 수준, 아래의 3가지 현상이 발생 dirty read: 트랜잭션을 수행하는 중 , 다른 트랜잭션에서 커밋하지 않은 수정 내용을 볼 수 있음 non-…

cecil1018.wordpress.com

https://jupiny.com/2018/11/30/mysql-transaction-isolation-levels/

Posted by kukuta
TAG

댓글을 달아 주세요