laravel-performance/app/Tasks/MassInsert/MassInsert3Task.php

52 lines
1.3 KiB
PHP

<?php
namespace App\Tasks\MassInsert;
use App\Models\Transaction;
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
class MassInsert3Task
{
/**
* insert multiple block
*
* insert into values ( ...), (....), ... 1000
* commit
*
* insert into values ( ...), (....), ... 1000
* commit
*
* insert into values ( ...), (....), ... 1000
* commit
*
* 1000 - Database\Seeders\TransactionSeeder ...... 1,443.86 ms DONE
* 10000 - Database\Seeders\TransactionSeeder ..... 14,256.24 ms DONE
* 100000 - Database\Seeders\TransactionSeeder .... 158,413.75 ms DONE
* 1000000 -
*
* 1. insert into transactions (id, value, date) values (1, 10, '2023-04-01');
* - index, view materialized
*
* 2. insert into transactions (id, value, date) values (2, 20, '2023-04-02');
* - index, view materialized
*/
public function handle(int $count): void
{
$block = 1000;
while ($count > 0) {
if ($count < $block) {
$block = $count;
}
$transactions = Transaction::factory($block)->make();
Transaction::query()->insert($transactions->toArray());
$count -= $block;
}
}
}