Database/MySQL

DB Isolation Level

BUST 2017. 6. 11. 10:25

Database Isolation Level

READ UNCOMMITTED(dirty read)

다른 트랜잭션이 Commit 전 상태를 볼 수 있음
Binary Log가 자동으로 Row Based로 기록됨 (Statement설정 불가, Mixed 설정 시 자동 변환)

READ-COMMITTED

Commit된 내역을 읽을 수 있는 상태로, 트랜잭션이 다르더라도 특정 타 트랜잭션이 Commit을 수행하면 해당 데이터를 Read할 수 있음
Binary Log가 자동으로 Row Based로 기록됨 (Statement설정 불가, Mixed 설정 시 자동 변환)

REPEATABLE READ

MySQL InnoDB 스토리지 엔진의 Default Isolation Level
Select 시 현재 데이터 버전의 Snapshot을 만들고, 그 Snapshot으로부터 데이터를 조회
동일 트랜잭션 내에서 데이터 일관성을 보장하고 데이터를 다시 읽기 위해서는 트랜잭션을 다시 시작해야 함

SERIALIZABLE

가장 높은 Isolation Level로 트랜잭션이 완료될 때까지 SELECT 문장이 사용하는 모든 데이터에 Shared Lock이 걸림
다른 트랜잭션에서는 해당 영역에 관한 데이터 변경 뿐만 아니라 입력도 불가


'Database > MySQL' 카테고리의 다른 글

Group By 쿼리의 활용  (0) 2018.06.09
MySQL 기본 Query 정리  (0) 2018.02.11
커버링 인덱스  (0) 2018.02.10
Timestamp and Datetime  (0) 2017.07.02
SubQuery 활용  (0) 2017.06.25