70 lines
2.1 KiB
PHP
70 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use App\Models\Transaction;
|
|
use Illuminate\Database\Seeder;
|
|
|
|
class TransactionSeeder extends Seeder
|
|
{
|
|
/**
|
|
* Seed the application's database.
|
|
*/
|
|
public function run(): void
|
|
{
|
|
$count = config('update-massive.items_count');
|
|
$type = 3;
|
|
|
|
if ($type === 1) {
|
|
|
|
/**
|
|
* insert unit
|
|
* 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 -
|
|
*/
|
|
Transaction::factory($count)->create();
|
|
}
|
|
|
|
if ($type === 2) {
|
|
|
|
/**
|
|
* insert multiple
|
|
* 1000 - Database\Seeders\TransactionSeeder ......... 96.11 ms DONE
|
|
* 10000 - Database\Seeders\TransactionSeeder ........ 887.48 ms DONE
|
|
* 100000 - SQLSTATE[HY000]: General error: 7 number of parameters must be between 0 and 65535
|
|
* 1000000 -
|
|
*/
|
|
$transactions = Transaction::factory($count)->make();
|
|
Transaction::query()->insert($transactions->toArray());
|
|
}
|
|
|
|
if ($type === 3) {
|
|
|
|
/**
|
|
* Limit insert sql string
|
|
* insert multiple block
|
|
*
|
|
* 1000 - Database\Seeders\TransactionSeeder ......... 97.71 ms DONE
|
|
* 10000 - Database\Seeders\TransactionSeeder ........ 833.27 ms DONE
|
|
* 100000 - Database\Seeders\TransactionSeeder ...... 8,256.29 ms DONE
|
|
* 1000000 - Database\Seeders\TransactionSeeder ..... 95,473.46 ms DONE
|
|
*/
|
|
|
|
$block = 1000;
|
|
while ($count > 0) {
|
|
|
|
if ($count < $block) {
|
|
$block = $count;
|
|
}
|
|
|
|
$transactions = Transaction::factory($block)->make();
|
|
Transaction::query()->insert($transactions->toArray());
|
|
|
|
$count -= $block;
|
|
}
|
|
}
|
|
}
|
|
}
|