AFAIK bukan pengelompokan sisi server di fe/be protokol
, jadi PgJDBC tidak bisa menggunakannya. . Perbarui :Yah, aku salah. PgJDBC (akurat pada 9.3) tidak kirim kumpulan kueri ke server jika tidak perlu mengambil kunci yang dihasilkan . Itu hanya mengantrekan banyak kueri di buffer pengiriman tanpa menyinkronkan dengan server setelah setiap kueri individual.
Lihat:
- Masalah #15:Aktifkan pengelompokan saat mengembalikan kunci yang dibuat
- Masalah #195:PgJDBC tidak menyalurkan kumpulan yang mengembalikan kunci yang dihasilkan
Bahkan ketika kunci yang dibuat diminta, perpanjangan kueri protokol digunakan untuk memastikan bahwa teks kueri tidak perlu dikirim setiap saat, hanya parameternya saja.
Terus terang, batching JDBC bukanlah solusi yang bagus dalam hal apa pun. Sangat mudah digunakan untuk pengembang aplikasi, tetapi kinerjanya cukup kurang optimal karena server masih harus mengeksekusi setiap pernyataan satu per satu - meskipun tidak parsing dan rencana satu per satu selama Anda menggunakan pernyataan yang sudah disiapkan.
Jika komit otomatis aktif, kinerja akan sangat menyedihkan karena setiap pernyataan memicu komit. Bahkan dengan autocommit off menjalankan banyak pernyataan kecil tidak akan terlalu cepat bahkan jika Anda dapat menghilangkan penundaan pulang pergi.
Solusi yang lebih baik untuk banyak UPDATE
sederhana s bisa ke:
COPY
data baru menjadiTEMPORARY
atauUNLOGGED
meja; dan- Gunakan
UPDATE ... FROM
untukUPDATE
denganJOIN
terhadap tabel yang disalin
Untuk COPY, lihat dokumen PgJDBC
dan COPY
dokumentasi di dokumen server
.
Anda akan sering menemukan kemungkinan untuk mengubah berbagai hal sehingga aplikasi Anda tidak perlu mengirim semua UPDATE
individu tersebut sama sekali.