2014년 1월 31일 금요일

[스프링3트랜잭션강좌]Transaction동시성,트랜잭션분리레벨(Isolation Level),spring framework3.X transaction, 트랜잭션이란, Transaction개요, 스프링프레임워크3.X Transaction교육강의, spring교육, 오라클자바커뮤니티, oraclejava커뮤니티 실무개발자 스프링교육

[스프링3트랜잭션강좌]Transaction동시성,트랜잭션분리레벨(Isolation Level),spring framework3.X transaction, 트랜잭션이란, Transaction개요, 스프링프레임워크3.X Transaction교육강의, spring교육, 오라클자바커뮤니티, oraclejava커뮤니티 실무개발자 스프링교육
 
1. Isolation Level
 
ISOLATION_DEFULAT : 개별적인 PlatformTransactionManager를 위한 디폴트 값, Datastore에 의존
 
ISOLATION_READ_UNCOMMITTED : 다른 트랜잭션이 아직 COMMIT되지 않은 데이터에 접근 가능, dirty read, nonrepeatble read, pantom reads 발생 가능
 
ISOLATION_READ_COMMITTED : 대개의 데이타 베이스의 디폴트이다. 커밋된 데이터만 접근 가능  : dirty reads 예방.
 
ISOLATION_REPEATABLE_READ : 같은 필드를 여러 번 불러와 작업한 경우, 그 트랜잭션 내에서 수정한 경우를 제외하고는 같은 결과가 리턴 되는 것을 보장, dirty read, nonrepeatble read 예방
 
ISOLATION_SERIALIZABLE : 완벽히 ACID_compliant isolation level 보장, 모든 상황 예방, 작업 속도가 저하되는 단점
 
2. 트랜잭션의 동시성
 
동시에 여러 트랜잭션이 작업을 하는 경우, 특히 한 데이터를 대해 여러 트랜잭션이 작업을 할 경우에는 예기치 못한 상황이 발생할 수 있다. 예를 들면 다음과 같은 경우가 발생할 수 있다.

- Dirty read : 한 트랜잭션이 아직 COMMIT 되지 않은 데이터를 읽어와서 다른 작업을 하고 있는데, 읽어온 데이터가 rollback 되어 날아가 버렸을 때...

- Nonrepeatable read : 동일한 쿼리를 여러 번 수행하는 도중에 다른 트랜잭션이 update 작업을 수행하는 바람에 쿼리 작업의 결과가 차이가 날 때

- Phantom reads : T1 트랜잭션이 다수 행을 읽어와서 작업하고 있는데, T2 트랜잭션이 T1이 읽어간 행 사이에 다른 행을 삽입하는 작업을 수행 할 때

댓글 없음:

댓글 쓰기