대량의 데이터를 데이터베이스에 삽입하려면 효율적인 일괄 삽입 작업이 필요합니다. 그러나 성능 병목 현상이 발생하는 것은 흔한 일입니다. MySQL 데이터베이스에 대한 JDBC 일괄 삽입 구현을 최적화하는 방법을 살펴보겠습니다.
제공된 코드에 설명된 것처럼 일반적인 기술은 백만 행 단위로 데이터를 일괄 삽입하는 것입니다. 그러나 코드 조각에 따르면 문제는 해결되지 않은 상태로 남아 있습니다.
중요한 단계는 준비된 문이 처리되는 방식을 최적화하는 것입니다. 기본적으로 MySQL은 클라이언트 측 준비된 문을 생성할 수 있으며 이로 인해 오버헤드가 발생할 수 있습니다. useServerPrepStmts 속성을 활성화하면 MySQL이 더 효율적인 서버측 준비된 명령문을 사용하게 됩니다.
MySQL에는 배치 삽입을 크게 향상시킬 수 있는 "배치 명령문 재작성"이라는 기능이 있습니다. 성능. rewriteBatchedStatements 속성을 통해 활성화되면 MySQL은 개별 삽입 문을 단일 배치 문으로 다시 작성하여 네트워크 왕복을 줄입니다.
다음은 제안된 최적화가 포함된 수정된 코드 조각입니다.
Connection c = DriverManager.getConnection( "jdbc:mysql://host:3306/db?useServerPrepStmts=false&rewriteBatchedStatements=true", "username", "password" ); ... // 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);
이러한 최적화를 적용하면 상당한 개선을 경험할 수 있습니다. MySQL 데이터베이스에 대한 JDBC 일괄 삽입 성능.
위 내용은 성능 향상을 위해 MySQL용 JDBC 일괄 삽입을 어떻게 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!