2010-12-20 1 views
1

Oracle 데이터베이스에서 CLOB 처리를위한 일부 오래된 Java/JDBC 코드를 검토 중입니다. 기존 코드는 this question에서 언급 한 접근법과 유사한 접근법을 사용합니다. SetBigStringTryClob을 사용하여 Oracle JDBC로 CLOB를 처리 할 때의 성능 관련 문제

난 상태 an article 발견

이전에 오라클 JDBC 10g의를, JDBC의 CLOB 데이터를 조작하기를, 오라클 확장 클래스 oracle.sql.CLOB 사용 하였다. 하지만 이제 Oracle JDBC 10g에는 JDBC 애플리케이션에서 CLOB 조작을 단순화하는 몇 가지 향상된 기능이 있습니다. 따라서 Oracle 확장 클래스를 사용하는 대신 사용 가능한 표준 API 중 일부를 사용하여 대용량 데이터를 처리 할 수 ​​있습니다. 기본적

이 메소드 preparedStatement.setString()가 32,765 바이트까지의 문자열 처리를 허용 할 것이다 :

물품이 강화의 세부 사항에 대해 다음과 같은 정보를 제공한다. 32765 바이트보다 큰 데이터를 삽입하려면 새로 도입 된 Connection 속성 인 SetBigStringTryClob를 설정할 수 있습니다. preparedStatement.setString()은 새로 도입 된 또 다른 메소드 인 OraclePreparedStatement.setStringForClob()를 대신 사용합니다.

그러나 그것은 경고 :

...이 방법은 현명하지 않을 수 있습니다 매우 많은 양의 데이터를 처리; 데이터를 스트리밍하는 것이 더 나은 대안입니다.

그러나이 문서에서 성능 관련 경고 만이 이상입니다. 제 질문은 코드의 모든 CLOB 액세스가 이고 이미이 String 객체를 통해 수행되는 경우이 접근 방법의 변경으로 인해 발생할 수있는 다른 성능 문제에 대해 걱정해야합니까? 즉, 스트리밍에 의해 제공되는 이점을 사용하지 않는 앱은 String 객체의 CLOB를 항상로드하므로 위의 성능 향상을 목표로하지 않으므로 경고를 무시할 수 있습니다. 이 기술로 전환하여 발생할 수있는 다른 성능 관련 문제가 있습니까?

답변

1

너는 얼마나 큰 소리 야? 정기적으로 짧은 오디오 파일과 웹 이미지를 성능 문제없이 메모리에서 처리합니다. 이들은 모두 킬로바이트 스케일 파일입니다. 나는 당신이 메가 바이트 크기를 운영한다면 스트리밍이 더 좋을 것이라고 생각합니다. LOB에 스트리밍을 사용하는 것은 실제로 표준화 된 것들로 이제는 꽤 쉽습니다.

+0

나는 내 질문을 명확히했다. 앱이 이미 그것을하고 있기 때문에 메모리 내 문자열 사용의 실제 성능에 대해 걱정하지 않습니다. 내가 걱정하는 점은 이러한 접근 방식 변경으로 인해 발생할 수있는 다른 숨겨진 성능 문제입니다. –

관련 문제