본문 바로가기
데이터베이스

[DB] Transaction Isolation Levels 이해하기

by joeun 2022. 5. 14.

트랜젝션(Transaction)이란?


정의

 

데이터베이스의 상태를 변화시키기 해서 수행하는 논리적인 작업의 단위를 뜻하며, 작업의 단위은 더 이상 나눌 수 없어야 한다.

 

 

 

예시
[계좌이체 = 출금 + 입금] 

 

'계좌이체'라는 작업이 성공하기 위해서는 출금과 입금이 모두 수행 & 성공해야 한다.

따라서 출금과 입금은 각각의 작업으로 처리되지 않고 하나의 작업 단위로 묶여서 처리된다. 만약 계좌이체 작업 수행 중 출금에는 성공했으나 입금에 실패했다면, 이는 곧 계좌이체 작업 전체의 실패를 의미하므로 진행 중인 작업은 출금하기 이전 상태로 Rollback돼야 한다. 

 

 

 

 

Transaction의 속성


ACID

 

  • Atomicity (원자성)
    : 나눌 수 없는 하나의 작업으로 다뤄져야 한다.

  • Consistency (일관성)
    : Transaction 수행 전과 후가 일관된 상태를 유지해야 한다.

  • Isolation (고립성)
    : 각 Transaction은 독립적으로 수행되어야 한다.    Isolation level로 조정 가능

  • Durability (영속성) 
    : 성공한 Transaction의 결과는 유지되어야 한다.



 

 

 

트랜젝션 격리 수준 (Transaction Isolation Level)이란?


정의

 

각 Transaction을 고립시키는 정도로, 총 네 가지의 Level이 있다.

MySQL은 REPEATABLE READ를, Oracle은 READ COMMITTED를 기본값으로 사용한다.

 

 

 

종류
  • READ UNCOMMITED
    커밋되지 않은 데이터도 읽기 가능.

  • READ COMMITED
    커밋된 데이터만 읽기 가능.

  • REPEATABLE READ 
    Transaction이 시작된 이후의 변경은 무시됨.

  • SERIALIZABLE 
    한 번에 하나의 Transaction만 독립적으로 수행.
    격리 수준 중 고립도가 가장 높다.


    * Commit(커밋) : 작업 내용을 DB에 영구적으로 저장하는 것.

 

 

 

 

 


참고

 

MySQL :: MySQL 8.0 Reference Manual :: 15.7.2.1 Transaction Isolation Levels

15.7.2.1 Transaction Isolation Levels Transaction isolation is one of the foundations of database processing. Isolation is the I in the acronym ACID; the isolation level is the setting that fine-tunes the balance between performance and reliability, consi

dev.mysql.com