문제

나는 Jboss와 Hibernate 기반 시스템입니다. 그리고 두 개의 긴 작업을 처리해야합니다. 운영은 아마도 트랜잭션 타임 아웃보다 길을 수 있습니다. IT 운영은 두 가지 다른 거래에서 많은 유인 기업입니다. 그리고 문제가 발생하면이 작업 중에 거래의 모든 변경 사항을 롤백해야합니다.

그것을 해결하는 가장 좋은 방법은 무엇입니까?

가장 좋은 방법은 모든 운영을 하나의 트랜잭션으로 병합하는 것이지만 긴 트랜잭션 시간 초과를 설정해야하며 시스템에는 용납 할 수 없습니다.

이 상황에서 많은 거래를 더 잘 관리하는 것입니다. 그리고 어떻게 할 수 있습니까?

도움이 되었습니까?

해결책

JTA 서버 (트랜잭션 코디네이터)를 사용하여 XA 트랜잭션과 함께 여러 단계로 트랜잭션을 수행 할 수 있습니까? 이 게시물 당신을 위해 일할 수있는 몇 가지 오픈 소스에 약간의 팬 아웃이 있습니다.

XA 거래 소규모 작업을 많이하고 한 번의 히트로 커밋하거나 롤백 할 수 있습니다. 'Hibernate XA Transactions'에 대한 인터넷 검색을 시도하십시오. 대부분의 최신 RDBMS 플랫폼 (MySQL 5.X, PostgreSQL, SQL Server, Oracle, DB2, Sybase 등)은 XA 트랜잭션을 지원합니다.

다른 팁

하나의 트랜잭션을 사용하는 것은 좋고 강력합니다. 관리자를 설득하려면 다시 시도하십시오 ;-)


그렇지 않으면 다음을 생각할 수 있습니다.

  • 사용 마커를 사용하여 "불완전한"". 이것은 기존 열이나 새 열에있을 수 있습니다 (어쩌면 다른 테이블에있을 수 있습니까?).
  • 트랜잭션 롤백이 있으면 다시 시도하십시오. 전체 작업을 중단하려면 "불완전한"마커가있는 행을 삭제할 수 있습니다.
  • 모든 거래가 진행되면 가능합니다 모든 행을 "완료"로 표시하기 만하면 마지막 트랜잭션을 엽니 다. (전: update ... where ...). 이것은 전체 삽입보다 훨씬 빠르야하므로 거래가 충분히 짧아야합니다.

JPA에서 비슷한 일을해야했습니다 (최대 절전 모드를 통해). 나는 1 개의 큰 트랜잭션이 아닌 N 트랜잭션에서 운영을 수행했습니다. 이 작업은 거의 실행되지 않았습니다. 자동화 된 작업이었습니다. 따라서 결과를 위해 웹 페이지에서 기다리는 사용자는 없었습니다.

거래가 얼마나 오래 걸릴 것으로 예상하십니까? 사용자가 얼마나 기다릴 것으로 기대합니까 ?? 이 작업이 얼마나 자주 발생할 것으로 예상합니까? 어쩌면 당신은 요구 사항이 명확하지 않을 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top