eunzae's develog

[SQL]트랜잭션 격리성(Isolation level) 본문

Language/SQL

[SQL]트랜잭션 격리성(Isolation level)

eunzae 2022. 4. 24. 21:11

트랜잭션의 격리성은, 일관성과 마찬가지로 Lock을 강하게 오래 유지할수록 강화되고, Lock을 최소화할수록 약화된다. 

 

 

은 단계의 격리성 수준에서 발생하는 현상

 

serializable

 

transection1 → insert

transection2 → insert

 

두 트랜잭션 동시에 수행 시

!err: Deadlock

 

 

Read uncommitted

 

transection1 → insert (Commit 하지 않은 상태)

transectrion2 → read(데이터 읽음)

 

Commit 되지 않은 데이터를 읽음  만약 Rollback 시 존재하지 않은 데이터를 읽은 것

Dirty read

 

 

Read committed(주로 사용)

 

transection1 → update (Commit 하지 않은 상태)

transectrion2 → read(데이터 읽음)

Commit 되지 않은 데이터를 읽음 

transection1 → Commit

transectrion2 → read(데이터 다시 읽음) 기존에 읽었던 데이터와 불일치

 

non-repeatable read

 

 

Isolation 높아질 수록 안정적 but 부하 가능성 있음

 

 

Reference

https://dataonair.or.kr/db-tech-reference/d-guide/sql/?pageid=2&mod=document&uid=362 

 

트랜잭션

트랜잭션(Transaction)은 업무 처리를 위한 논리적인 작업 단위다. 작업의 논리적 단위가 단일 연산이 아닐 수 있다. 즉, 하나의 트랜잭션이 두 개 이상의 갱신 연산일 수 있다. 은행의 “계좌이체”

dataonair.or.kr