2012-09-19 2 views
2

내 프로세스에서 JDBC를 사용하여 40,000 개가 넘는 데이터 레코드 작업. 성능을 향상시키기 위해 PreparedStatement 및 일괄 업데이트를 사용하고 있습니다.JDBC 일괄 업데이트 및 예외 처리?

배치 업데이트에서 예외를 처리하는 데 필요한 제안이 있습니까? 예외를 처리하는 방법, 예외를 알 수있는 방법이 40000 레코드에서 5001 레코드를 처리하는 동안 발생 했습니까? getCause()와 getNextException를 (사용하여 예외)이 마침내의 JDBCException /되는 SQLException를 찾을 수를 분석하여 사전

+1

에 대한 예외를 처리합니다. 내가 당신에게 최고의 성능을 제공에 따라 10-100 작은 배치를 사용하는 것이 좋습니다. –

+0

어떤 종류의 예외를 의미합니까 (모든 코드 예제)? 거래 처리에 관한 것 같아요. 일괄 처리를 '묶어서'처리하는 것이 좋습니다. 특정 수의 업데이트 이후에 트랜잭션을 커밋합니다 (단, 논리적으로는 일관성없는 데이터가 발생할 수 있음). – home

답변

0

에서

감사합니다.

이제는 데이터베이스 종속 예외에 대한 문제를 제기하고 확실한 문제/congrete 인덱스 (즉, nr 5001)에 대한 식별자를 찾을 수 있습니다.

더 높은 jdbc 버전 (즉, jdbc4)을 가진 다른 JDBC 드라이버를 사용해보십시오.

1

당신은 BatchUpdateException을 사용할 수 있습니다. 다음 코드를 참조하십시오. 여기서 오류를 알아낼 수 있습니다.

try { 
    // statements related to batch updates.... 
} catch (BatchUpdateException be) { 
    //handle batch update exception 
    be.printStackTrace(); 
    int[] counts = be.getUpdateCounts(); 
    for (int i=0; i<counts.length; i++) { 
     System.out.println("Statement["+i+"] :"+counts[i]); 
    } 
} 
0

사용 된, BatchUpdateException 당신은 오류가 발생하는 하나 밖으로 작동 코드를 작성해야 일괄 업데이트