2009-06-22 4 views
2

우리 프로젝트에서는 Oracle XA Connection 풀을 사용합니다. 쿼리 (트랜잭션)의 작은 하위 집합 만 배포됩니다. 나머지는 아주 단순한 단일 데이터베이스 수정입니다.XAC Oracle (10g)의 연결 성능 ​​

성능 차이가 있는지 알고 싶습니다. XAConnections와 정상적인 것의 차이점은 무엇입니까?

우리는 websphere v6.1을 서버로 사용합니다.

XAConn이별로 성능이 좋지 않은 경우 두 개의 데이터 소스가 있고 적절하게 연결되어 있다고 가정합니다.

모든 포인터가 도움이 될 것입니다.

답변

2

다음을 입증 할 벤치 마크가 없습니다. 이것은 "우리 모두가 알고있는"일반적인 지혜입니다. 모든 성능 토론과 마찬가지로 Milage Will Vary도 응용 프로그램에 절대적으로 중요하다면 사용자 자신의 벤치 마크를 수행해야합니다.

XA가 아닌 작업에 XA 가능 연결 풀을 사용하면 성능 오버 헤드가 거의 없다고 생각합니다. WebSphere는 트랜잭션에서 단일 리소스 만 사용되는 경우 1PC 트랜잭션을 사용합니다. XA의 주요 오버 헤드는 XA 메시지 세트 인 Prepare/Commit/Forget 세트이며, 이는 단순한 1PC 경우에는 발생하지 않습니다.

따라서 2PC 트랜잭션을 부주의하게 시작하는 것이 주요 위험입니다. 이것은 동일한 레 소르 어스에 대해 (예를 들어) 서로 다른 격리 수준을 사용하여 여러 작업을 수행 할 때 발생할 수 있습니다. 풀에서 연결을 확보하고 작업을 수행하면 COMMIT이 될 때까지 해당 연결이 이제 트랜잭션과 연관됩니다. 개념적으로 연결을 "닫기", 개념적으로 풀로 되돌려 놓았지만 사실 WebSphere의 풀링은 트랜잭션에 대한 연결을 유지합니다. 똑같은 연결을 다시 요구할 것이므로 동일한 연결을 다시 요청하면 작업이 단일 트랜잭션으로 계속 진행되므로 몇 가지 작업을 수행하려면 연결을 다시 요청하십시오. 우리는 오버 헤드없이 1PC만을 사용합니다.

처음에는 하나의 XA 가능 풀을 가지고 있지만 2PC 작업, 하나의 1PC 작업을위한 두 개의 별도 리 소스 참조가 있습니다. 두 참조가 모두 동일한 연결 풀을 가리 키도록하십시오. 이제 코드가 별도의 연결 풀을 가질 필요가 없으므로 코드를 변경해야하는 경우 resource-ref를 리 바인드해야합니다.