JavaScriptを有効にしてください

【Laravel】大量INSERTする際に chunk を使おう

 ·  ☕ 1 分で読めます

【Laravel】大量INSERTする際に chunk を使おう

Laravel で大量INSERTする際にエラーが出たり、遅くなったりします。そういう時は chunk を使用します。

できるだけ大量データを入れる際は chunk を使用してください。
僕の経験では一括で入れようとするとDBがエラーを起こしたり、挿入によるテーブルロックでDBが遅くなったりします。

確認環境情報

  • PHP 8.1
  • Laravel9

サンプル

サンプルは1万件のデータを500件ずつに分割してデータ挿入を行います。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<?php
$inserts = [];

// テスト用データの作成
for($i = 0; $i < 10000; $i++){
    $inserts[] = [
        'id' => $i,
        'value' => str()->random(16),
    ]
}

$insertData = collect($inserts);
// 500件ずつデータを入れる
foreach ($insertData->chunk(500) as $chunk) {
   Sample::insert($chunk->toArray());
}

参考

共有

こぴぺたん
著者
こぴぺたん
Copy & Paste Engineer