본문 바로가기

Database/ORACLE

[Database]Transaction Isolation Level(트랜잭션 고립 레벨)

[Database]Transaction Isolation Level(트랜잭션 고립 레벨)


트랜잭션 고립 레벨


Database를 관리, 운영, 지원하다보면

트랜잭션이라는 말을 많이 듣게 됩니다.

이때 다양한 트랜잭션 관련 용어들을 보고 듣게 되는데, 잘 이해가 안가는 표현들이 많았던 경험들이 있으실겁니다.


오늘은 거기에 대한 내용을 정리 해볼께요~




트랜잭션에서 병행 작업시 발생하는 문제점


dirty reads : 다른 트랜잭션에서 커밋되지 않은 변경내용을 볼 수 있다.

nonrepeatable reads : 최초에 읽기 작업 후, 다른 트랜잭션이 데이터를 변경 시키고, 그 다음                                     읽기 작업이 변경된 사항을 읽어들여 최초의 읽기와 두 번째 읽기 작업                                     의 결과가 불일치 하는 경우.

phantom reads : nonrepeatable reads에 where 조건 추가.


고립 레벨 종류 (Transaction Isolation Level)


TRANSACTION_NONE : 트랜잭션 지원 안함.

TRANSACTION_READ_UNCOMMITTED : 커밋되지 않은 데이터도 볼 수 있음.

TRANSACTION_READ_COMMITTED : 커밋된 데이터만 볼 수 있음.

TRANSACTION_REPEATABLE_READ : dirty reads와 nonrepeatable 방지, phantom reads는 방                                                       지 못함.

TRANSACTION_SERIALIZABLE : dirty / nonrepeatable / phantom reads 모두 방지.





By.sTricky