2009년 10월 26일 월요일

[Timeout]UserTransaction과 SQL Timeout관계

javax.transaction.UserTransaction(ut)을 사용하는 Global Transaction의 기본적인 구조는 아래와 같다.

-----------------------

시간     소스

0초      ut.begin();

1초         select();        -> SQL Timeout

2초         insert()          -> SQL Timeout

3초         update();       -> SQL Timeout

4초         delete();        -> SQL Timeout

5초      ut.commit();    -> Transaction Timeout

-----------------------

* Transaction Timeout : begin() ↔ commit() 사이의 최대시간

* SQL Timeout : 각각 SQL 단위 수행 최대시간

 

이와 같이 UserTransaction을 사용하는 Global Transaction에서 고려해야 할 기본적인 Timeout은

Transaction TimeoutSQL Timeout 이다.

 

즉, 위의 예제를 보면,

총 Transaction 수행 시간은 5초이므로, Transaction Timeout 은 5초 보다 커야 하고,

SQL 수행시간은 1초이므로, SQL Timeout은 1초보다 커야한다.

 

<Timeout 설정값 비교>

 구분

UserTransaction

JEUS 5.0 

 Transaction Timeout

setTransactionTimeout

<active-timeout>

 SQL Timeout

 -

<stmt-query-timeout>

 

 

 

 

        

 

 

 

댓글 없음: