batchUpdate를 사용하여 Oracle 테이블에 삽입하고 있습니다. 5 개의 다른 병렬 스레드가 batchUpdate 메소드를 호출하여 단일 테이블에 삽입합니다. 테이블은 전역 임시 테이블 유형입니다.테이블 잠금을 발생시키는 Java의 MultiThreading
프로그램 실행이 완료되지 않아 데이터베이스 연결을 설정 한 후 프로그램이 실행되지 않습니다.
단일 글로벌 임시 테이블에서 작동하는 여러 스레드가 테이블 잠금을 야기하여 프로그램 실행을 유지합니까?
나는 잠긴 테이블이 예들은 것 질의 -
select object_name, object_type from all_objects where object_id in (select object_id from v$locked_object);
왜 5 개의 스레드입니까? 왜 하나의 스레드가 삽입 작업을 수행하고 다른 5 개의 "밀어 넣기"값을 처리하지 않을까요? – fge
차단하거나 잠그고 있습니까? 첫 번째 스레드가 트랜잭션을 커밋한다고 가정하면 두 번째 스레드는 트랜잭션을 커밋 할 수 있어야합니다. 그렇지 않으면 데이터 풀이 다른 방법으로 작동합니다. –
스레드가 각각 연결/세션을 갖고 있습니까? 아니면 동일한 세션을 공유하고 경쟁합니까? 실제로 GTT 인 경우 세션은 어쨌든 자신의 데이터 만 볼 수 있으므로 서로 intefere하지 않아야합니다. 어쩌면 하나의 스레드가 단일 연결을 보유하고 있고 다른 네 개의 스레드가 DB가 아닌 Java 수준에서 대기 중일 수 있습니까? –