rewriteBatchedStatements를 사용한 JDBC 최적화
JDBC의 rewriteBatchedStatements 매개변수를 사용하면 여러 쿼리를 단일 패킷으로 결합하여 효율적인 네트워크 통신이 가능합니다. 이렇게 하면 네트워크 I/O와 관련된 오버헤드를 크게 줄일 수 있습니다.
배칭 작동 방식
rewriteBatchedStatements를 true로 설정하면 JDBC 드라이버가 자동으로 여러 명령문을 하나의 명령문으로 그룹화합니다. 단일 패킷. 이는 데이터가 자주 반복적이고 효율적으로 함께 압축될 수 있는 삽입 또는 업데이트 쿼리를 보내는 데 특히 유용합니다.
예를 들어 다음 코드를 고려해보세요.
<code class="java">try (Connection con = DriverManager.getConnection(myConnectionString, "root", "whatever")) { try (PreparedStatement ps = con.prepareStatement("INSERT INTO jdbc (`name`) VALUES (?)")) { for (int i = 1; i <= 5; i++) { ps.setString(1, "Lorem ipsum dolor sit amet..."); ps.addBatch(); } ps.executeBatch(); } }</code>
일괄 처리 없이, 드라이버는 5개의 개별 INSERT 문을 데이터베이스에 보냅니다. 그러나 rewriteBatchedStatements를 활성화하면 대신 단일 다중 행 INSERT 문을 보낼 수 있습니다.
<code class="sql">INSERT INTO jdbc (`name`) VALUES ('Lorem ipsum dolor sit amet...'),('Lorem ipsum dolor sit amet...')</code>
max_allowed_packet 문제 방지
MySQL의 max_allowed_packet 변수는 최대값을 설정합니다. 네트워크 패킷의 크기. 패킷이 이 크기를 초과하면 쿼리가 성공적으로 실행되지 않을 수 있습니다. JDBC 드라이버는 이 제한을 인식하고 필요한 경우 자동으로 큰 패킷을 작은 패킷으로 분할합니다.
따라서 드라이버가 자동으로 관리하므로 개발자는 일반적으로 max_allowed_packet에 대해 걱정할 필요가 없습니다. 그러나 매우 큰 패킷 크기가 필요한 경우 개발자는 이를 수용하기 위해 MySQL 서버에서 max_allowed_packet 값을 조정해야 할 수도 있습니다.
위 내용은 JDBC의 'rewriteBatchedStatements'는 어떻게 네트워크 효율성을 향상시키고 큰 패킷 크기를 처리할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!