Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menggunakan libpqxx untuk menyimpan data dalam jumlah besar ATAU cara menggunakan pernyataan COPY di libpqxx

pushLog function mengkomit setiap sisipan secara terpisah, dan komit lambat.

Seperti yang dijelaskan dalam Mengisi Database dokumentasi :

Juga:

Namun dalam kasus Anda, itu akan menjadi masalah daripada keuntungan, karena setiap INSERT mungkin gagal pada pelanggaran kunci utama, sehingga membatalkan INSERT sebelumnya sejak komit terakhir. Perhatikan bahwa ini juga akan menjadi masalah dengan COPY , haruskah Anda menggunakannya.

Karena sangat penting untuk mengelompokkan kueri dalam transaksi untuk kinerja, Anda perlu menangani pelanggaran kunci utama dengan cara yang tidak membatalkan transaksi.

Dua metode biasanya digunakan:

  1. Hindari kesalahan:INSERT INTO... WHERE NOT EXISTS (SELECT 1 FROM table WHERE primary_key=...)

  2. Jebakan kesalahan dengan memasukkan di dalam fungsi plpgsql yang memiliki blok PENGECUALIAN yang mengabaikannya. INSERT spesifik yang menyebabkan duplikat akan dibatalkan tetapi transaksi tidak akan dibatalkan.

Jika Anda memiliki penyisipan bersamaan, metode ini perlu disempurnakan dengan strategi penguncian.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MYSQL menunjukkan baris yang salah saat menggunakan GROUP BY

  2. Kapan menambahkan indeks pada bidang tabel SQL (MySQL)?

  3. Django - OperationalError:(2006, 'server MySQL telah hilang')

  4. Kapan saya harus menggunakan transaksi dalam kueri saya?

  5. Membuat kombinasi tabel/kolom menggunakan SQL Query atau Laravel SQL Query Builder