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

Cara tercepat untuk menyisipkan/memperbarui satu juta baris di Laravel 5.7

Nonaktifkan autocommit dan komit secara manual di akhir penyisipan

Menurut dokumen MySQL 8.0. (8.5.5 Pemuatan Data Massal untuk Tabel InnoDB )

Anda dapat meningkatkan kecepatan INSERT dengan mematikan komit otomatis:

Cara lain untuk melakukannya di Laravel adalah menggunakan Transaksi Basis Data :

DB::beginTransaction()

// Your inserts here

DB::commit()

Gunakan INSERT dengan beberapa VALUES

Juga menurut dokumen MySQL 8.0 (8.2.5.1 Mengoptimalkan Pernyataan INSERT ) Anda dapat mengoptimalkan kecepatan INSERT dengan menggunakan beberapa VALUES pada satu pernyataan sisipan.

Untuk melakukannya dengan Laravel, Anda cukup meneruskan array nilai ke insert() metode:

DB::table('your_table')->insert([
   [
       'column_a'=>'value',
       'column_b'=>'value',
   ],
   [
       'column_a'=>'value',
       'column_b'=>'value',
   ],
   [
       'column_a'=>'value',
       'column_b'=>'value',
   ],
]);

Menurut dokumen, ini bisa berkali-kali lebih cepat.

Baca dokumen

Kedua tautan dokumen MySQL yang saya taruh di posting ini memiliki banyak tips untuk meningkatkan kecepatan INSERT.

Hindari menggunakan Laravel/PHP untuk memasukkannya

Jika sumber data Anda (atau dapat berupa) file CSV, Anda dapat menjalankannya lebih cepat menggunakan mysqlimport untuk mengimpor data.

Menggunakan PHP dan Laravel untuk mengimpor data dari file CSV adalah biaya tambahan, kecuali jika Anda perlu melakukan beberapa pemrosesan data sebelum memasukkan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hubungkan aws ec2 mysql dengan aplikasi java lokal saya

  2. Kesalahan Pembaruan Rekaman Vb6

  3. mysql dapatkan perbedaan alih-alih SUM

  4. Doctrine 2 QueryBuilder menambahkan beberapa elemen/parameter pilihan?

  5. PHPmailer - Beberapa pengiriman email