2012-09-27 2 views
0

일부 이미지가 들어있는 @Lob 필드가 거의없는 엔티티가 있습니다. 그리고, 방법에 따라이 방법은 내 표는 큰대로 실행 시간이 오래 걸리는 쿼리를 다음과 생산큰 (blob) 엔티티, 성능 문제가 지속되는 EclipseLink/JPA

entityManager.persist(myEnity); 

을 실행할 때.

SELECT id, img_1, img_2 FROM my_entity WHERE (ID = :1) FOR UPDATE; 

행만 INSERT하기 때문에이 쿼리를 실행하지 마십시오.

참고로 다음 애플리케이션 환경이 있습니다. LOB를 작성하는 유일한 방법은 삽입하고 빈 로브, 그리고 다시 그들에 쓰는 LOB를 선택하는 것입니다, 그래서 오라클 (11) 전

EJB 3.0 
EclipseLink 2.3.0 
JDK 1.6 
WebLogic 10.3 
Oracle 11g 
+0

long_ _How 걸립니까, 카스타와 플랫폼에 로케이터 사용을 해제 할 수 있습니다? 'id'가 프라이 머리 키라면 인덱스이기도하고 수 밀리 초가 걸릴 것입니다. – perissf

+0

실제로이 쿼리는로드 테스트를 수행 할 때 빛이났습니다. 다른 삽입/선택 쿼리를이 함께 실행하고 다른 쿼리와 비교할 때이 매우 느립니다. 예를 들어, 다른 삽입 쿼리는 전체로드 중 약 5 %를 차지하며이 중 하나는로드의 25 %를 차지합니다. –

답변

0

오라클 JDBC 드라이버는 4K의 LOB 크기 제한이 있었다. 이것이 당신이보고있는 것입니다.

"eclipselink.target-database"가 "Oracle8i", "Oracle9i", "Oracle10g"인 경우에만 구성 가능합니다.

Oracle 11g의 경우 "Oracle11"을 사용해야합니다.이 플랫폼은 더 이상 Oracle 11g에서 필요하지 않으므로 로케이터를 사용하지 않습니다. 이 경우 최신 버전 (2.4)을 사용해야 할 수도 있습니다. "Oracle"을 대상으로 사용하면 로케이터도 사용되지 않습니다.

또한

platform.setShouldUseLocatorForLOBWrite(false); 
관련 문제