PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

kinerja batch jdbc

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:

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 menjadi TEMPORARY atau UNLOGGED meja; dan
  • Gunakan UPDATE ... FROM untuk UPDATE dengan JOIN 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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan Menyimpan Geodjango PointField

  2. tidak bisa membuat sisipan PostgreSQL sederhana berfungsi

  3. Tutorial PostgreSQL Untuk Pemula – Yang Perlu Anda Ketahui Tentang PostgreSQL

  4. Perbedaan antara tipe data DECIMAL dan NUMERIC di PSQL

  5. Untuk mengabaikan hasil SEBELUM PEMICU PostgreSQL?