Rumah  >  Artikel  >  Java  >  Bagaimanakah `rewriteBatchedStatements` dalam JDBC boleh Meningkatkan Kecekapan Rangkaian dan Mengendalikan Saiz Paket Besar?

Bagaimanakah `rewriteBatchedStatements` dalam JDBC boleh Meningkatkan Kecekapan Rangkaian dan Mengendalikan Saiz Paket Besar?

Patricia Arquette
Patricia Arquetteasal
2024-10-26 19:43:29615semak imbas

How can `rewriteBatchedStatements` in JDBC Improve Network Efficiency and Handle Large Packet Sizes?

Pengoptimuman JDBC dengan rewriteBatchedStatements

Parameter rewriteBatchedStatements dalam JDBC membolehkan komunikasi rangkaian yang cekap dengan menggabungkan berbilang pertanyaan ke dalam satu paket. Ini boleh mengurangkan dengan ketara overhed yang dikaitkan dengan rangkaian I/O.

Cara Pengumpulan Berfungsi

Dengan rewriteBatchedStatements ditetapkan kepada benar, pemacu JDBC akan mengumpulkan berbilang penyata secara automatik ke dalam satu paket. Ini amat berguna untuk menghantar pertanyaan sisipan atau kemas kini, di mana data selalunya berulang dan boleh dibungkus bersama dengan cekap.

Sebagai contoh, pertimbangkan kod berikut:

<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>

Tanpa batching, pemandu akan menghantar lima pernyataan INSERT individu ke pangkalan data. Walau bagaimanapun, dengan rewriteBatchedStatements didayakan, ia mungkin menghantar satu penyata INSERT berbilang baris sebaliknya:

<code class="sql">INSERT INTO jdbc (`name`) VALUES ('Lorem ipsum dolor sit amet...'),('Lorem ipsum dolor sit amet...')</code>

Mengelakkan Isu max_allowed_packet

Pembolehubah max_allowed_packet dalam set MySQL saiz untuk paket rangkaian. Jika paket melebihi saiz ini, pertanyaan mungkin tidak berjaya dilaksanakan. Pemacu JDBC menyedari had ini dan secara automatik akan membahagikan paket besar kepada yang lebih kecil jika perlu.

Oleh itu, pembangun biasanya tidak perlu bimbang tentang paket_maksimum_dibenarkan, kerana pemandu akan menguruskannya secara automatik. Walau bagaimanapun, jika saiz paket yang sangat besar diperlukan, pembangun mungkin perlu melaraskan nilai paket_maks_allowed pada pelayan MySQL untuk menampungnya.

Atas ialah kandungan terperinci Bagaimanakah `rewriteBatchedStatements` dalam JDBC boleh Meningkatkan Kecekapan Rangkaian dan Mengendalikan Saiz Paket Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn