2011-05-04 2 views
4

단일 트랜잭션에서 세 개의 테이블을 업데이트해야합니다. 잠재적으로 수십만 개의 레코드와 교차하는 Oracle Spatial을 사용하고 있습니다. 상호 참조 무결성을 유지하려면 단일 트랜잭션에서 대량의 상호 참조로 세 테이블을 업데이트해야합니다.단일 Oracle 트랜잭션에서 수행 할 수있는 작업의 양에는 한계가 있습니까?

단일 트랜잭션에서 수행 할 수있는 양에는 측정 가능한 한계가 있습니까? 단일 트랜잭션에서 수천 개의 삽입/업데이트/삭제 작업을 수행 할 수있는 함정이 있습니까? 함정에 대해서는 잘 다루는 패턴/관행이 있습니까?

답변

6

아니요, 변경 사항을 수용 할만큼 충분한 UNDO 공간을 제공한다고 가정 할 때 단일 트랜잭션에서 수행 할 수있는 작업의 양에는 제한이 없습니다. 물론 많은 사람들이 동시에 트랜잭션을 수행하고 여러 사람이 같은 행에 영향을 미칠 가능성이있는 경우 장기 실행 트랜잭션은 잠금 경합을 초래할 수 있습니다. 또한 거래가 전체적으로 사람의 입력을 필요로하는 경우 (즉, 거래가 지리적 영역에서 파이프 라인을 실행하는 다양한 방법을 시도하는 사람의 경우), 하나의 장기 실행 트랜잭션으로 인해 사람이 작업을 완료하기 전에 퇴장하고자하는 문제가 발생할 수 있습니다.

Oracle Workspace Manager은 사용자가 상위 작업 공간 날짜 또는 시간대로 다시 병합 할 수있는 별도의 작업 공간에서 작업 할 수있게하여 대용량 공간 데이터 세트에서 이러한 장기 실행 트랜잭션을 처리하도록 특별히 작성된 Oracle 데이터베이스의 구성 요소입니다. 몇 주 후. 작업 공간 관리자의 의미는 트랜잭션의 의미와 매우 유사하지만 작업 공간을 떠나 다시 결합하는 기능, 작업 공간을 전환하는 기능 및 하위 작업 공간의 계층 구조를 제공하는 기능을 제공합니다.

+2

또한 장기 실행 트랜잭션은 블록의 읽기 일관성있는 이미지 생성과 관련된 다른 세션에서 성능 저하를 일으킬 수 있습니다. –

2

한계는 실행 취소 테이블 공간 크기로 설정됩니다. 각 트랜잭션의 변경 사항은 실행 취소 테이블 공간에 완전히 들어 있어야합니다.

관련 문제