laravel-performance/app/Tasks/Mass/MassInsert/MassInsert4Task.php

37 lines
948 B
PHP

<?php
namespace App\Tasks\Mass\MassInsert;
use App\Models\Transaction;
use Illuminate\Support\Facades\DB;
class MassInsert4Task
{
/**
* insert unit with transaction
*
* 100 ............ 0,044 s DONE
* 1_000 ............ 0,352 s DONE
* 10_000 ............ 3,000 s DONE
* 100_000 ........... 35,000 s DONE
* 1_000_000 .......... 391,000 s DONE (6m 31s)
*
* 1. insert into transactions (id, value, date) values (1, 10, '2023-04-01');
* 2. insert into transactions (id, value, date) values (2, 20, '2023-04-02');
* .... 100.000
*
* - reconstroi os indices, verifica chave, view materializada
*/
public function handle(int $count): void
{
DB::beginTransaction();
try {
Transaction::factory($count)->create();
DB::commit();
} catch (\Exception $exception) {
DB::rollBack();
}
}
}