JDBC 일괄 삽입 성능 최적화
MySQL 데이터베이스에 대용량 데이터를 삽입하려면 최적의 성능을 보장하기 위해 효율적인 일괄 처리가 필요합니다. 한 번에 1백만 개의 레코드를 일괄 삽입하는 것이 합리적으로 보일 수 있지만 이 프로세스를 더욱 최적화하는 기술이 있습니다.
문제 이해
제공된 코드는 준비된 명령문을 사용합니다. 테이블에 값을 삽입하지만 두 개의 키를 활용하지 않습니다. 속성:
연결 최적화
이러한 최적화를 활성화하려면 연결 URL에서 두 속성을 모두 설정하세요.
Connection c = DriverManager.getConnection("jdbc:mysql://host:3306/db?useServerPrepStmts=false&rewriteBatchedStatements=true", "username", "password");
수정된 코드
이러한 최적화가 적용되면 업데이트된 코드는 다음과 같습니다.
try { // Disable auto-commit c.setAutoCommit(false); // Create a prepared statement String sql = "INSERT INTO mytable (xxx), VALUES(?)"; PreparedStatement pstmt = c.prepareStatement(sql); Object[] vals=set.toArray(); for (int i=0; i<vals.length; i++) { pstmt.setString(1, vals[i].toString()); pstmt.addBatch(); } // Execute the batch int [] updateCounts = pstmt.executeBatch(); System.out.append("inserted "+updateCounts.length); } catch (SQLException e) { e.printStackTrace(); }
결론
"useServerPrepStmts" 및 "rewriteBatchedStatements" 속성을 설정하면 일괄 삽입 프로세스가 크게 최적화되어 경과 시간을 줄일 수 있습니다. 대용량 데이터를 삽입하는데 시간이 걸립니다.
위 내용은 최대 MySQL 성능을 위해 JDBC 일괄 삽입을 어떻게 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!