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

doktrin2 - Bagaimana cara meningkatkan efisiensi flush?

Anda melakukannya dengan benar -- ini hanya lambat, karena abstraksi ORM yang ditambahkan berarti Anda tidak dapat melakukan pengoptimalan yang diinginkan.

Konon, EntityManager menjadi lambat pada transaksi sebesar itu. Jika Anda tidak benar-benar membutuhkan semuanya dalam satu transaksi besar, Anda mungkin bisa mendapatkan lebih banyak kode yang berkinerja baik dengan menyiram() dan kemudian menghapus() EM setiap 20-200 iterasi dari loop Anda.

Jika itu tidak memberi Anda kinerja yang cukup, satu-satunya alternatif yang dapat saya pikirkan adalah kembali ke kode khusus yang menjalankan SQL khusus secara langsung terhadap DBMS Anda.

Saya tahu ini bukan jawaban yang bagus, tetapi setidaknya saya dapat memberi tahu Anda bahwa Anda tidak gila.

------ edit -------strong>

Dari artikel resmi Doctrine2 di Pemrosesan batch :

Juga ada perbedaan kinerja yang signifikan saat menggunakan jarak jauh vs lokal database sebagai overhead pengiriman setiap query ke server jauh cukup besar. Overhead jauh lebih rendah saat menggunakan database lokal berkat transaksi dan pengoptimalan DB. (mis. 70 detik diturunkan menjadi 300 md dalam kasus contoh dalam pertanyaan)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengatasi kesalahan MySQL Deadlock ditemukan saat mencoba mendapatkan kunci; coba mulai ulang transaksi

  2. hapus semua catatan dari tabel di mysql

  3. Nilai string salah:'\xEF\xBF\xBD' untuk kolom

  4. pengelompokan mysql berdasarkan minggu

  5. Pernyataan yang Disiapkan MySQL